如果我有一个包含许多代码段文件夹的文件夹,如何避免Git或Mercurial在另一个文件夹中提交源代码?

时间:2011-03-27 03:51:35

标签: git mercurial dvcs

如果我有一个文件夹,例如:

code/try_closure
code/try_http_send
  [...]

我可以在code文件夹中创建一个存储库,但是如果我在try_http_send文件夹中提交,那么

hg commit -m "good version"      <--- git should be similar

然后,我可能会在code下的所有其他文件夹中意外提交其他代码更改。

或者,我可以为每个子文件夹创建存储库,但这有点愚蠢,如果我需要将整个code推送到另一个位置,那么我需要逐个推送子文件夹一?有办法解决这个问题吗?这里的关键字是“意外”提交其他子文件夹中的所有文件。我知道我可以使用hg commit . -m "good version",但改为hg commit -m "..."非常容易。

3 个答案:

答案 0 :(得分:3)

使它们成为单独的存储库,然后使它们成为顶级代码模块的subrepositories。然后在代码中你可以hg push --subrepos将它们全部推送出去,然后也可以克隆为树。

答案 1 :(得分:1)

存储库应包含您要一起提交的内容。如果您永远不想将来自单独文件夹的代码一起提交,则每个文件夹应该是一个单独的存储库。

答案 2 :(得分:0)

说真的,你应该在这段时间内度过这段时间。除此之外,检查下一次提交的内容总是一个好主意,例如:使用hg sthg diff。这样的检查是对提交工作的最后快速审查,并可能提醒您仅提交一些文件(例如.)。除非您想快照当前的工作,否则不应盲目承诺。

那就是说,如果你真的想要在没有文件参数的情况下提交,你可以

  • 按照其他答案中的建议使用subrepos,或
  • 使用.作为默认参数
  • 定义提交alias