在哪里设置分支在mercurial?

我是Mercurial的新手,想就我团队项目的情况下设置分支机构寻求一些有经验的build议。 该项目将由其他4名成员共享。

我在本地机器上的目录/ home / Cassie / localRepository / src1上有一个存储库。 在我的机器/ home / Cassie / localRepository / src2上有另一个目录,其中大部分常见文件都是src1目录,但也有一些不同的文件。 例如,在/ home / Cassie / localRepository / src1中,有

file1 file2 file3 file4 file5 

在/ home / Cassie / localRepository / src2中,有

 file1 file2 file3 file4(version2) file5(version 2) 

我想让他们成为两个不同的分支,分别工作。 但是,我仍然继续在file1,file2和fil3上工作,并希望这两个分支随时间更新文件1文件2文件3。 请注意,src1目录中的file4和file5与src2目录中的文件共享相同的名称。 如果我移动同一目录中的每个文件,将无法区分哪个版本与哪个版本。 这就是为什么我在src1目录下保存了一个版本的file4和file5,在scr2目录下保存了另一个版本的file4和file5。 我有一个在bitbucket的团队帐户,并推送src1目录到帐户。 因此,bitbucket将src1中的所有文件作为中央存储库。 现在,我在哪里设置分支为src2,并实现我的目标的问题。

顺便说一句,我的本地机器是Linux的RedHat工作站6.2,并有1.7和1.5的tortoisehg。

我试过一些实验:

(1)我创build了另一个目录,src作为我的本地存储库。 复制文件1,2,3,添加并提交它们。

(2)然后,我把src1目录中的file4复制到src中,并将其命名为src1-Branch,将其复制,并将file4.txt添加到src1-branch中并提交。

(3)创build另一个叫src2-branch的分支,切换到src2-branch by

 hg update src2-branch 

,从src2目录复制file4(version2)到当前目录

  cp ../src2/file4.txt . 

,添加file4并尝试提交file4.txt。 但是,我遇到了一个错误消息

 waiting for lock on working directory of /home/Cassie/src held by 'Cassie-PC:20994' 

然后我在网上search,人们build议删除.hg / wlock。 有效 !

任何人都知道为什么问题发生在第一位? 当我将src2中的file4.txt添加到src2-branch时,我做错了什么? 谢谢

我认为你可以使用Mercurial分支完成你想要的。 您可以在分支机构中保留对文件的更改,也可以将这些更改合并到其他分支中。 在你的src1仓库中,创建一个src2分支:

  > hg branch src2 

然后,您可以删除文件4和5并添加文件6和7:

 > hg remove file4 file5 > cp ..\src2\file6 . > cp ..\src2\file7 . > hg add file6 file7 > hg commit -m "Removing file4 and file5; adding file6 and file7." 

然后,您使用Mercurial的合并命令将更改从一个分支引入另一个分支。 从你原来的问题,听起来像你想从默认(src1)分支到src2分支的变化。 在这种情况下,你会:

 > hg up src2 > hg merge default > hg commit -m "Merging default -> src2" 

合并将来自源分支的所有未合并更改带入目标分支。 如果您只想对其进行一些更改,请使用移植命令(如果使用的是Mercurial 2.0或更高版本),或使用移植扩展(如果使用早期版本)。