在Mercurial / Hg中检出文件

3
我学习了Subversion版本控制,现在正在尝试使用Mercurial。在Subversion中,我有一个独立的项目存储库,可以将其检出到我的Visual Studio Projects文件夹中并在那里进行工作。现在我正在使用一个具有多个项目的Mercurial存储库。我有一个单独的本地副本和中央副本。修改本地副本的标准方法是直接修改存储库中的文件,但我不喜欢这种方式,因为如果需要重新定位任何内容,我就无法实现。是否有一种方法可以将我的项目检出到任何我想要的位置?我不喜欢编辑-复制-粘贴-提交的方式。

我不明白你对标准方式(直接在存储库中修改文件)有什么不喜欢的地方。你说的“因为如果需要,我无法重新定位任何东西”是什么意思? - Christian Specht
公司所有项目的代码都在本地仓库中,因此如果我只是要处理某个文件集,将其全部复制到Visual Studio项目文件夹中就没有意义了。Visual Studio默认会在Projects文件夹中创建新项目,而我现在必须将所有受版本控制的项目保存在仓库中。 - Kendall Frey
2个回答

4
你的问题是这样的:

所有公司项目的代码都在本地仓库中。

从Mercurial文档中"What Mercurial can't do"引用:

许多SVN/CVS用户希望在一个存储库中托管相关项目。这确实不是Mercurial的初衷,因此您应该尝试不同的工作方式。特别是,这意味着您不能仅检出存储库的一个目录。

如果您绝对需要在一种元存储库中托管多个项目,可以尝试使用Mercurial 1.3引入的Subrepositories功能或旧的ForestExtension。

有关使用Mercurial的实践介绍,请参见教程。

--> 当您使用像Mercurial这样的分布式版本控制系统时,应尝试为每个项目创建一个存储库。
如果您这样做,您的问题将消失,因为如果您需要修改项目X,您只需克隆Project X的完整存储库到您的机器上即可!

如果您来自Subversion,也许您应该阅读一篇教程,解释SVN和HG之间的区别,例如以下之一:


很不幸,在我加入之前就已经决定将所有内容放在一个仓库中,我对此没有太多发言权。我认为我要么复制/粘贴,要么告诉Visual Studio去仓库里找? - Kendall Frey
@kendfrey:很抱歉听到这个消息,但是决定使用HG而不是SVN,并坚持将所有内容保存在一个仓库中的旧决定并不明智,这表明做出这个决定的人并不真正了解SVN和HG之间的区别。如果没有任何改变的可能性(向他们展示这里的答案!),恐怕您必须使用您提到的其中一种肮脏的黑客/解决方法。 - Christian Specht
好的,项目分支和hg clone -b可以在当前状态下(部分地)提供帮助。但是拆分项目是更正确的方式,毫无疑问。 - Lazy Badger
@kendfrey - 你需要将你的文件(手动一次性)从基于路径的项目移动到至少基于分支的项目。如果你无法在“中央”仓库上创建分支,恐怕最好不要使用Mercurial,或者从头开始学习Mercurial课程。 - Lazy Badger
听起来是个好主意。问题在于公司的其他人可能不会听刚学会使用Mercurial的新人的建议。 - Kendall Frey
显示剩余2条评论

0
你正在寻找 hg pull -u /path/to/central/repo 吗?

我想从我的本地仓库中获取特定的文件,而不是全部文件,并将其传输到我的文件系统中,然后再传回去。我已经拥有了本地仓库。 - Kendall Frey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接