我们正在尝试运行一个chron作业,自动将独立的CVS模块转换为mercurial模块,最后,将这些转换后的汞模块合并到一个汞回购中。
我一直在设法在没有用户窗口提示的情况下自动合并.hgtags (来自转换后的.hgtags)(因此在chron作业中使用)。
在使用hg合并时,是否有一种方法可以告诉mercurial,只需获取本地文件并将其附加到传入文件中?
感谢您提供的任何信息或建议
发布于 2011-03-02 10:59:26
是的,您可以像Krtek描述的那样设置一个合并工具。我刚试了一下,这个就行了:
[merge-tools]
merge-tags.executable = cat
merge-tags.args = $local $other | sort -u >> $output
[merge-patterns]
.hgtags = merge-tags把它放在服务器上的.hg/hgrc文件中,以后的合并就会附加标记。所发生的是hg merge将执行
cat /tmp/hgtags.local /tmp/hgtags.other | sort -u >> .hgtags其中,cat的第一个参数是.hgtags文件的本地版本,而第二个参数是您要合并的版本。
为了避免重复两个文件中常见的行,我对输出进行排序并使其惟一。只要您只添加标记,它就能正常工作--但是如果您也删除了标记,那么.hgtags文件中行的顺序就会很重要,所以您不能就这样对其进行排序。请参阅 我的扩展答案 以处理此情况.
这是我的考试。首先,我用两个头创建了一个存储库:
$ hg init
$ echo a > a.txt
$ hg add a.txt
$ hg commit -m a
$ echo b > b.txt
$ hg add b.txt
$ hg commit -m b
$ hg tag b
$ hg update 0
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
$ echo c > c.txt
$ hg add c.txt
$ hg commit -m c
created new head
$ hg tag c分支在图形日志扩展的输出中可见。
@ changeset: 4:54c5397a23a4
| tag: tip
| user: Martin Geisler <mg@aragost.com>
| date: Wed Mar 02 11:45:20 2011 +0100
| summary: Added tag c for changeset aff5fe9be7d9
|
o changeset: 3:aff5fe9be7d9
| tag: c
| parent: 0:0db5fae8b6cc
| user: Martin Geisler <mg@aragost.com>
| date: Wed Mar 02 11:45:17 2011 +0100
| summary: c
|
| o changeset: 2:a9af8514a64e
| | user: Martin Geisler <mg@aragost.com>
| | date: Wed Mar 02 11:45:02 2011 +0100
| | summary: Added tag b for changeset 0518533f37f6
| |
| o changeset: 1:0518533f37f6
|/ tag: b
| user: Martin Geisler <mg@aragost.com>
| date: Wed Mar 02 11:44:44 2011 +0100
| summary: b
|
o changeset: 0:0db5fae8b6cc
user: Martin Geisler <mg@aragost.com>
date: Wed Mar 02 11:44:33 2011 +0100
summary: a.hgtags文件中存在冲突:
$ hg cat -r 2 .hgtags
0518533f37f6f37edbea5b46d9af2192f69ddecd b
$ hg cat -r 4 .hgtags
aff5fe9be7d9b021e55dfb522b29fd03cbcf5cb7 c但是合并仍然是非交互的:
$ hg merge
merging .hgtags
1 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)您可以看到文件是如何附加的:
$ cat .hgtags
aff5fe9be7d9b021e55dfb522b29fd03cbcf5cb7 c
0518533f37f6f37edbea5b46d9af2192f69ddecd b发布于 2012-10-08 13:02:46
sort -mu给了我我想要的。此命令不进行排序,但删除重复项。
sort -u破坏时间顺序。
发布于 2011-03-01 16:54:02
只有当您的.hgtags文件中有冲突时才会出现窗口提示,这应该是非常罕见的。然而,这里也许有一个可行的想法。
Mercurial允许您使用与内部工具不同的合并工具,有关更多信息,请参见MergeToolConfiguration。您还可以通过带有--tool选项的命令行更改mergetool (参见hg merge --help)。
也许您可以编写一些小程序,作为.hgtags的一个特殊的合并工具,它可以做您想做的事情,即将本地文件附加到传入的文件中。然后,您可以修改hgrc,以便在合并.hgtags时使用这个新工具。
我从来没有尝试过这个解决方案,这只是一个想法,但也许它会对你有帮助。
https://stackoverflow.com/questions/5157519
复制相似问题