History

Remove handling of environment variables (#301)

We should find another way that plays well with configuration. Probably it needs another version of this function with more parameters.

Sebastian Thiel committed 4 years ago

Commit 4e914f81 parent 54be8e31 file · +5 −11Browse files

Unified · Split

git-discover/src/is.rs+5−11
@@ -1,26 +1,22 @@
1use std::{1use std::{ffi::OsStr, path::Path};
2 ffi::OsStr,
3 path::{Path, PathBuf},
4};
5 2
6/// Returns true if the given `git_dir` seems to be a bare repository.3/// Returns true if the given `git_dir` seems to be a bare repository.
7///4///
8/// Please note that repositories without any file in their work tree will also appear bare.5/// Please note that repositories without an index generally _look_ bare, even though they might also be uninitialized.
9pub fn bare(git_dir_candidate: impl AsRef<Path>) -> bool {6pub fn bare(git_dir_candidate: impl AsRef<Path>) -> bool {
10 let git_dir = git_dir_candidate.as_ref();7 let git_dir = git_dir_candidate.as_ref();
11 !(git_dir.join("index").exists() || (git_dir.file_name() == Some(OsStr::new(".git")) && git_dir.is_file()))8 !(git_dir.join("index").exists() || (git_dir.file_name() == Some(OsStr::new(".git")) && git_dir.is_file()))
12}9}
13 10
14/// What constitutes a valid git repository, and what's yet to be implemented, returning the guessed repository kind11/// What constitutes a valid git repository, returning the guessed repository kind
15/// purely based on the presence of files. Note that the git-config ultimately decides what's bare.12/// purely based on the presence of files. Note that the git-config ultimately decides what's bare.
16///13///
17/// * [ ] git files14/// * [ ] git files
18/// * [x] a valid head15/// * [x] a valid head
19/// * [ ] git common directory16/// * [ ] git common directory
20/// * [ ] respect GIT_COMMON_DIR
21/// * [x] an objects directory17/// * [x] an objects directory
22/// * [x] respect GIT_OBJECT_DIRECTORY
23/// * [x] a refs directory18/// * [x] a refs directory
19// TODO: allow configuring common dirs at least
24pub fn git(git_dir: impl AsRef<Path>) -> Result<crate::repository::Kind, crate::is_git::Error> {20pub fn git(git_dir: impl AsRef<Path>) -> Result<crate::repository::Kind, crate::is_git::Error> {
25 let dot_git = git_dir.as_ref();21 let dot_git = git_dir.as_ref();
26 22
@@ -43,9 +39,7 @@ pub fn git(git_dir: impl AsRef<Path>) -> Result<crate::repository::Kind, crate:: · 16 unmodified lines
43 }39 }
44 40
45 {41 {
46 let objects_path = std::env::var("GIT_OBJECT_DIRECTORY")42 let objects_path = dot_git.join("objects");
47 .map(PathBuf::from)
48 .unwrap_or_else(|_| dot_git.join("objects"));
49 if !objects_path.is_dir() {43 if !objects_path.is_dir() {
50 return Err(crate::is_git::Error::MissingObjectsDirectory { missing: objects_path });44 return Err(crate::is_git::Error::MissingObjectsDirectory { missing: objects_path });
51 }45 }