Mercurial和xcuserdata,.ds_store和.git

时间:2011-11-15 00:02:20

标签: xcode mercurial merge hgignore

Mercurial noob在这里。我在处理mercurial和xcuserdata和.ds_store以及.git等文件时遇到了很多麻烦。我的智慧结束了。

目前的设置有一个像中间人一样的中央回购。我们推动并拉动它的变化。

之前推送的提交包括在创建.hgignore文件之前包含不需要的文件(xcuserdata,git,ds_store)。这导致了噩梦。

我尝试了什么:

我试图忽略这个问题并让合并处理它,但是由于冲突,它会在每次推送时导致中央仓库上的分支(推送中的冲突都没有显示在终端中所以我没有机会合并推送)并破坏项目文件,使其导致合并工具如filemerge和kdiff3挂起。

我尝试制作一个本地.hgignore文件并使用hg忘记xcuserdata来停止跟踪那些东西,但它仍然会推送并拉出那些不需要的文件。

我想要发生什么:

我希望中央存储库删除那些不需要的文件。每个开发人员仍应拥有自己的本地版本的这些文件。新提交将忽略这些文件。我该怎么做?

由于

1 个答案:

答案 0 :(得分:4)

只需hg forget要删除的文件并将其推送到服务器即可。下一次团队的其他成员将从存储库中撤出时,这些文件也将被遗忘。

请注意forget仅适用于当前分支,如果您有其他分支,则必须对每个分支执行此操作。

要自动忘记.hgignore中包含的所有文件,您可以

hg forget "set:hgignore()"

确保团队的每个部分都了解您对这些文件的决定,否则他们将来可能会再次添加这些文件。沟通是关键!

仅供参考,.hgignore对存储库中的文件已经没有任何影响,它只会影响未添加的文件。

否则,如果你真的想要从历史记录中完全删除文件,你可以使用MQ扩展,但这是另一个故事,它更加复杂和无用恕我直言。