【发布时间】:2014-08-07 12:35:47
【问题描述】:
我正在编写一个 git pre commit 钩子(用于 Windows 和 osx),如果我在提交当前暂存的 mod 后克隆 repo,我需要知道是否会存在一个目录。由于没有跟踪目录,我需要知道在提交后是否有一个文件将在目录或其任何子目录中被跟踪。我目前使用以下代码,但感觉很不稳定:
public bool TrackedAfterCommit(IDirectory directory)
{
var dirs = new Stack<IDirectory>();
dirs.Push(directory);
while (dirs.Count > 0)
{
var d = dirs.Pop();
foreach (var f in d.Files)
{
var command = new ConsoleCommand(
"git",
"status --porcelain --ignored " + f.Path, directory.Path
);
var output = command.Execute();
if (output.Count == 0)
return true;
var status = output[0];
if (!status.StartsWith("D")
&& !status.StartsWith("??")
&& !status.StartsWith("!"))
{
return true;
}
}
foreach (var dir in d.Directories)
dirs.Push(dir);
}
return false;
}
【问题讨论】:
标签: git githooks pre-commit-hook