对于Mercurial存储库中的给定文件,您如何查看修订历史记录?
你如何区分文件的两个修订版?
理想情况下使用可视化工具完成所有这些(我们使用ExamDiff来做其他差异).
我会说这是基本的源代码控制功能,但我似乎无法弄清楚如何使用Mercurial执行此操作.
要求:
谷歌发现了这些:
编辑:
没有应用程序,只有库.
我试图找到一些语义差异/合并实用程序的好例子.比较源代码文件的传统范例通过比较行和字符来工作..但是有没有任何实用程序(对于任何语言)在比较文件时实际考虑代码结构?
例如,现有的差异程序将报告"在第125行的字符2处找到的差异.文件x包含void,其中文件y包含bool".一个专门的工具应该能够报告"返回类型的方法doSomething()从void更改为bool".
我认为这种类型的语义信息实际上是用户在比较代码时所寻求的,并且应该是下一代编程工具的目标.可用工具中是否有这方面的例子?
有没有办法限制git diff更改的文件?
我想看看两个提交之间的差异,但排除一个或另一个中不存在的路径(添加/删除).以下Perl单线程说明了我想要的大部分内容:
git diff master.. | perl -lnwe 'print unless /^(new|deleted) file/../^diff/ and not /^diff/'
Run Code Online (Sandbox Code Playgroud)
但是这会diff --git a/path b/path为新文件或删除的文件留下线条.另外,如果我不需要解析它会更好(如果任何hunk包含匹配/ ^ diff /的任何内容,也会失败).
我尝试的另一种选择是:
git diff --name-status (args) | perl -lnwe 'print if s/^M\s+//' | xargs git diff (args) --
Run Code Online (Sandbox Code Playgroud)
它的输出更好,但仍然感觉很乱.
如何创建适合在坩埚中检查的补丁?
git diff branch master --no-prefix > patch
Run Code Online (Sandbox Code Playgroud)
这只产生3行上下文.所以我做了以下几点
git diff --unified=2000 branch master --no-prefix > patch
Run Code Online (Sandbox Code Playgroud)
希望所有文件都少于2000行.有没有办法告诉git包含补丁文件中的所有行而不必指定最大行?
我的.net应用程序中有几个配置文件,我想合并应用程序设置元素等.
我正准备像往常一样手动开始,但是我认为必须有一个XML diff GUI工具.
该工具将能够进入元素级别来比较和显示差异等.
然而,谷歌没有提供实质性的免费工具结果,也没有任何有价值的提示.
这样的工具可用吗?那非常有用吗?免费?
提前致谢.:)
编辑:
以下是对功能的一些澄清,这些功能可以将我容易出错,繁琐的手动作业转变为1分钟的简单任务(并且可以实现自动化):
在KDiff3中,您可以对整个目录进行差异/合并.有一个分层差异,非常准确,用户友好和清晰.我有兴趣找到一个类似的解决方案,而不是目录层次结构,XML元素层次结构.
如果没有这样的开源软件,我正在考虑在CodePlex上创建一个以提供此功能.
我有一个文件a.txt.
cat a.txt
> hello
Run Code Online (Sandbox Code Playgroud)
内容a.txt是"你好".
我做了一个提交.
git add a.txt
git commit -m "first commit"
Run Code Online (Sandbox Code Playgroud)
然后我a.txt进入了一个test目录.
mkdir test
mv a.txt test
Run Code Online (Sandbox Code Playgroud)
然后我做了第二次提交.
git add -A
git commit -m "second commit"
Run Code Online (Sandbox Code Playgroud)
最后,我编辑a.txt说"再见".
cat a.txt
> goodbye
Run Code Online (Sandbox Code Playgroud)
我做了最后一次提交.
git add a.txt
git commit -m "final commit"
Run Code Online (Sandbox Code Playgroud)
现在这是我的问题:
如何区分a.txt上次提交和第一次提交之间的内容?
我试过了
git diff HEAD^^..HEAD -M a.txt,但是那没用. git log --follow a.txt正确检测重命名,但我找不到相应的git diff.有吗?
有两个文件夹约.150个java属性文件.
在shell脚本中,如何比较两个文件夹以查看其中任何一个文件夹中是否存在任何新属性文件以及属性文件之间的差异.
输出应采用报告格式.
在标题中,我希望在master分支和我创建的分支之间有一个特定文件夹的diff文件.