我正在尝试使用
hgsvn
转换 SVN 存储库,并且我有一些修改了 SVN 属性的提交,但由于 Mercurial 不使用这些内容,因此它会将其视为空提交并中止。有没有办法强制这个hg commit
接受不改变任何内容的提交?
我对
hgsvn
的内部结构还不够熟悉,无法破解它以跳过空提交。
如果您将本地 svn.$REVNUM 标记添加到头部修订版(=现在也具有 svn.($REVNUM-1) 标记的修订版),则可以跳过此提交。然后您可以继续使用 hgpullsvn。
假设您的导入处于此状态(上次导入的转速为 15800,仅属性转速为 15801):
$ hg log -l1
changeset: 1234:123456789abc
branch: trunk
tag: tip
tag: svn.15800
parent: 1233:cba987654321
user: Rudi <[email protected]>
date: Tue Aug 24 11:42:23 2010 +0200
summary: Foobar
$ svn info
Path: .
URL: svn+ssh://example.com/foobar/trunk
Repository Root: svn+ssh://example.com/foobar
Repository UUID: 26c7c274-8ed1-4e7f-bdc1-5c767a948b10
Revision: 15801
Node Kind: directory
Schedule: normal
Last Changed Author: rudi
Last Changed Rev: 15801
Last Changed Date: 2010-08-24 14:00:29 +0200 (Di, 24 Aug 2010)
然后您只需添加 svn.15801 标签即可:
$ hg tag -l -r 123456789abc svn.15801
然后继续导入。
但是在尝试此操作之前请先进行备份。
我认为你不能在 Mercurial 中进行空提交。这是一个解释原因的帖子。
当我之前需要在 p4 和 hg 中进行空提交时,我只是使用了一个预留为“空提交”的文件。只需将某种随机字符串(我通常使用时间和日期)转储到一次性文件中,然后
hg commit
消失......
根据 @vorrtex 对原始问题的评论,在 Mercurial 中强制执行空提交的最简单方法如下:
Dummy.txt
)并提交。hg forget Dummy.txt
hg commit --amend
这将从之前的提交中删除
Dummy.txt
,并将其留空。 (您可以在步骤 1 中使用 TortoiseHg,但在步骤 2 和 3 中需要使用命令行工具。)
我将其添加为新答案,因为最初扫描此线程时我错过了评论,并且现有答案不会创建真正空的提交。
也许,以下内容对您的情况没有帮助,但也许对其他读者有帮助。
您可以通过导入几乎空的补丁来进行“空”提交。我导出了一个补丁,删除了其中的所有更改,只留下 3 行(diff...、---... 和 +++ ...),然后使用
hg import --bypass --message ...
导入它