2011-01-26 131 views
1

我想将每个代码文件夹的.svn文件夹提交到Hg存储库。问题是很多.svn子文件夹都是空的,因此无法提交到mercurial存储库。如何提交.svn文件夹到Mercurial存储库?

我发现的一个解决方案是向每个文件夹添加一个空文件,但这很麻烦。没有更简单的方法吗?

+2

为什么需要源代码管理下的.svn文件夹? – jgifford25

+0

@jgifford我们必须最终承诺SVN仓库,但是我们每天都使用Mercurial –

+2

@Jader,我们和你们的情况类似,因为我们必须按企业标准使用CVS,但是为了我们的理智,我们正在使用Git。我们不检入CVS文件夹。我们在我们的git repo /目录下工作,并定期将代码拉入包含我们CVS签出的克隆本地存储库/目录中。然后,我们从该CVS签出文件夹提交CVS。 – Vadim

回答

2

当你想在一个svn回购的顶部使用汞,你可以尝试hgsubversion extension。 Hgsubversion使得svn客户端能够与svn服务器交谈。

OTOH如果你坚持在任何地方都有.svn文件夹,你可以使用hgsvn来管理你的并行hg和svn回购结账。但是hgsvn有一个缺点,就是它没有自动重新绑定svn的东西,所以当你不得不将合并的svn历史和本地历史合并时,你不能导出每个本地提交,只有合并提交(即使存在合并时也可以导出每个提交,但第一个本地提交将撤消最近的svn历史记录,并且合并提交将重做它,这会导致svn历史记录存在缺陷)。

更多关于不同svn < - > hg工作流程位于WorkingWithSubversion wiki页面。

+0

我无法使用hgsubversion,因为我的SVN存储库要求(预提交挂钩)每个新文件都应该有'svn:needs-lock'属性 –

4

您需要为每个文件添加一个空文件。你能做到这一点迅速用:

for thedir in $(find /path/to/repo -type -d -name .svn) ; do 
    touch $thedir/emptyfile 
    hg add $thedir/emptyfile 
done 
+0

伟大的剧本!也许有人可以写一个窗口以及 –

+6

我认为Windows脚本被称为实习生。 ;) –

相关问题