您好我正在使用GitPull方法将更改提取到存储库。
从以下链接中提及
http://cakebuild.net/api/Cake.Git/GitAliases/CC1AE32F
我需要在执行GitPull方法时获取更新文件的日志。
有没有办法在下面的页面中获取这些详细信息,或建议其他方式在蛋糕上执行上述操作。
答案 0 :(得分:3)
首先是免责声明,因为之前的Cake.Git / Libgit2sharp合并问题,您需要升级到版本0.14.0
或更晚Cake.Git
才能使此答案生效。
无论快进合并与否,最简单的方法是可靠地获取更改文件:
执行此操作的Cake.Git
方法是
这看起来像下面的
#addin nuget:?package=Cake.Git&version=0.14.0
DirectoryPath repoDir = MakeAbsolute(Directory("./Cake_Git"));
string name = "John Doe",
email = "john@doe.com";
var beforePullCommit = GitLogTip(repoDir);
var pullResult = GitPull(repoDir, name, email);
if (pullResult.Status!=GitMergeStatus.UpToDate)
{
var afterPullCommit = GitLogTip(repoDir);
var diff = GitDiff(repoDir, beforePullCommit.Sha, afterPullCommit.Sha);
foreach(var file in diff)
{
Information("{0}", file);
}
}
GitDiff返回具有这些属性的GitDiffFile的ICollection。
Name Value Summary
Exists bool The file exists in the new side of the diff.
OldExists bool The file exists in the old side of the diff.
OldPath string The old path.
Path string The new path.
Status GitChangeKind The kind of change that has been done
(added, deleted, modified ...).
并且有一个ToString()覆盖sp,这个脚本的输出看起来像这样
Path: ReleaseNotes.md, OldPath: ReleaseNotes.md, Status: Modified, Exists: True, OldExists: True
Path: src\Cake.Git\Cake.Git.csproj, OldPath: src\Cake.Git\Cake.Git.csproj, Status: Modified, Exists: True, OldExists: True
Path: src\Cake.Git\GitMergeResult.cs, OldPath: src\Cake.Git\GitMergeResult.cs, Status: Modified, Exists: True, OldExists: True
Path: src\Cake.Git\packages.config, OldPath: src\Cake.Git\packages.config, Status: Modified, Exists: True, OldExists: True
Path: src\SolutionInfo.cs, OldPath: src\SolutionInfo.cs, Status: Modified, Exists: True, OldExists: True
但是因为它是一个打字的对象,你当然可以通过编程方式进行更多操作。
答案 1 :(得分:1)
执行GitPull方法时。
您可以使用(非蛋糕解决方案)尝试after a git pull(即fetch plus merge)
git log --stat
所述
git log --name-only ..FETCH_HEAD
我没有看到Cake GitLog方法支持的选项,因此您可以尝试至少解析结果:
var result = GitLog("c:/temp/cake", 1);
(这是git pull
生成的最后一次合并提交)