如何将文件保密到Mercurial存储库?

时间:2011-12-16 09:05:16

标签: version-control mercurial

我喜欢在我正在处理的项目中保留一个包含私人数据(链接等)的文件。我喜欢被版本化但不能导出(通过推送)到其他存储库。

下面是我的问题的更多示意图。

  1. 我将存储库(r)克隆到我的存储库(m)
  2. 我在我的存储库(m)中添加了一个文件,我不想将其推送到初始存储库(r),但我想在我的存储库(m)中跟踪它。这是我保存链接等文件。
  3. 如何推送到初始存储库(r)但忽略我的存储库(m)中的文件?

3 个答案:

答案 0 :(得分:1)

Mercurial推送变更集,而不是文件。

如果您要求Mercurial通过添加文件来开始跟踪文件,然后提交文件,那么它现在已成为存储库历史记录的一部分。

从此存储库推送,也会推送该文件。

总结:不要这样做,不能做到。找到另一种方法来处理这种情况。

答案 1 :(得分:1)

了解Mercurial Queues

只需存储创建包含mq-patch 中所有私有内容的文件(或者只有补丁中的私有数据和repo中的文件骨架)

答案 2 :(得分:0)

您可以在m存储库中创建一个新存储库,并将所有文件放入其中。 mercurial忽略存储库中的存储库,除非您通过subrepo扩展包含它们。

cd m
hg init local
cd local
echo "my stuff" > info.txt
cd ..
hg st
# does not show files in local
cd local
hg ci -A -m "first commit"
cd ..
hg log -l 2
# does not show commit in local

在我看来,更好的解决方案是创建一个存储在m存储库之外的存储库。它更干净,更难以搞砸。