【问题标题】:How to commit the .svn folder to a Mercurial repository?如何将 .svn 文件夹提交到 Mercurial 存储库?
【发布时间】:2011-06-15 21:57:49
【问题描述】:

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

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

【问题讨论】:

  • 为什么需要源代码管理下的.svn文件夹?
  • @jgifford 我们最终必须提交到 SVN 存储库,但我们每天都使用 Mercurial
  • @Jader,我们的情况与您类似,因为我们必须按照公司标准使用 CVS,但为了我们的理智而使用 Git。我们不签入 CVS 文件夹。我们在我们的 git 存储库/目录中工作,并定期将代码拉入包含我们的 CVS 签出的克隆本地存储库/目录中。然后,我们从该 CVS 签出文件夹提交到 CVS。
  • 请注意,.svn 文件夹中的文件无法合并。对 Subversion 存储库的并行提交将失败。你确定这是你想要的吗?
  • @Yads 成功了。我将不得不点击更多,但这是唯一的方法

标签: svn mercurial directory commit


【解决方案1】:

您需要为每个文件添加一个空文件。您可以通过以下方式快速做到这一点:

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

【讨论】:

  • 好剧本!也许有人也可以为 windows 写一个
  • 我认为windows脚本被称为实习生。 ;)
【解决方案2】:

当你想在一个 svn repo 上使用 hg 时,你可以试试hgsubversion extension。 Hgsubversion 让 mercurial 能够像 svn 客户端一样与 svn 服务器通信。

OTOH,如果您坚持在任何地方都有 .svn 文件夹,您可以使用 hgsvn 来管理您的并行 hg 和 svn repo 结帐。但是 hgsvn 的缺点是它不会对返回 svn 的内容进行自动变基,因此当您必须将 svn 历史记录与您的本地历史记录合并(就可变合并而言)时,您不能导出每个本地提交

有关不同 svnhg 工作流程的更多信息,请参见 WorkingWithSubversion wiki 页面。

【讨论】:

  • 我无法使用 hgsubversion,因为我的 SVN 存储库要求(预提交挂钩)每个新文件都应具有 svn:needs-lock 属性
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多