Mercurial hat eine Möglichkeit, das Root-Verzeichnis (das .hg enthält) über
hg root
Gibt es etwas Äquivalentes in Git, um das Verzeichnis zu erhalten, das das .git-Verzeichnis enthält?
Mercurial hat eine Möglichkeit, das Root-Verzeichnis (das .hg enthält) über
hg root
Gibt es etwas Äquivalentes in Git, um das Verzeichnis zu erhalten, das das .git-Verzeichnis enthält?
Für den Fall, dass jemand eine POSIX-konforme Methode braucht, um dies zu tun, ohne dass er git
ausführbar:
git-root
:
#$1: Path to child directory
git_root_recurse_parent() {
# Check if cwd is a git root directory
if [ -d .git/objects -a -d .git/refs -a -f .git/HEAD ] ; then
pwd
return 0
fi
# Check if recursion should end (typically if cwd is /)
if [ "${1}" = "$(pwd)" ] ; then
return 1
fi
# Check parent directory in the same way
local cwd=$(pwd)
cd ..
git_root_recurse_parent "${cwd}"
}
git_root_recurse_parent
Wenn Sie die Funktionalität nur als Teil eines Skripts benötigen, entfernen Sie den Shebang und ersetzen Sie das letzte git_root_recurse_parent
Linie mit:
git_root() {
(git_root_recurse_parent)
}
Ich musste dieses Problem heute selbst lösen. Gelöst es in C#, wie ich es für ein Programm benötigt, aber ich denke, es kann esily umgeschrieben werden. Betrachten Sie dies als Public Domain.
public static string GetGitRoot (string file_path) {
file_path = System.IO.Path.GetDirectoryName (file_path);
while (file_path != null) {
if (Directory.Exists (System.IO.Path.Combine (file_path, ".git")))
return file_path;
file_path = Directory.GetParent (file_path).FullName;
}
return null;
}
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.