1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
//! Provide the current Git commit SHA1 during build.
//!
//! When building crates from a Git repository it is often desirable to extract the
//! current version number in form of the Git SHA1 to be displayed. This crate extracts
//! the current Git SHA1 during build time and makes it accessible as an environment
//! variable.
//!
//! If the crate is currently built without access to the Git SHA1 (i. e. it was extracted
//! from a tar-archive, or Git is not installed), instead of failing, it falls back on a
//! default value. This value defaults to "", but can be changed with the
//! [`use_default()`](struct.GitSHA1.html#method.use_default) method.
//!
//!
//! # Example
//!
//! In `build.rs`:
//! ```
//! use git_sha1::GitSHA1;
//!
//! fn main() {
//! GitSHA1::read().set("GIT_SHA1");
//! }
//! ```
//!
//! In `main.rs`:
//! ```
//! use git_sha1::GitSHA1;
//!
//! // either as static &str:
//! static SHA1: &str = env!("GIT_SHA1");
//!
//! // or during runtime:
//! fn main() {
//! let sha1 = GitSHA1::from_env("GIT_SHA1");
//!
//! let long = sha1.long();
//! assert_eq!(SHA1, long);
//!
//! let short = sha1.short(10);
//! // `short` may be shorter if SHA1 does not exist
//! assert_eq!(short.len(), usize::min(10, short.len()));
//! }
//! ```
//!
use Command;
/// *deprecated*
///
/// Number of hex-characters in the Git SHA1.
///
/// There are half as many __bytes__ in a SHA1.
///
/// This value is true for any Git SHA1, but must not necessarily be the number of digits
/// available in the extracted value. Either because Git is not even installed, or because
/// the crate is not compiled from a Git repository and the implementation falls back on a
/// default string to return instead.
///
pub const GIT_SHA1_LENGTH: usize = 40;