我是Mercurial的新手,想就我团队项目的情况在何处设置分支寻求一些有经验的建议。该项目将由其他 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,并希望这两个分支都能随时间更新 files1 files2 files3。请注意,src1 目录中的 file4 和 file5 与 src2 目录中的文件共享相同的名称。如果我将所有文件移动到同一目录中,将无法区分哪个版本。这就是为什么我将一个版本的 file4 和 file5 保存在 src1 目录中,并将另一个版本的 file4 和 file5 保存在 scr2 目录中。我在 bitbucket 有一个团队帐户,并将 src1 目录推送到该帐户。因此,bitbucket 将 src1 中的所有文件作为中央存储库。现在,我遇到了在哪里为 src2 设置分支并实现我的目标的问题。
顺便说一句,我的本地机器是 Linux RedHat workstation 6.2 并且有 mercurial 1.7 和 tortoisehg 1.5。
我做了一些实验:
(1) 我创建了另一个目录 src 作为我的本地存储库。将文件 1、2、3 复制到其中,添加并提交它们。
(2) 然后,我将 file4 从 src1 目录复制到 src 并使其成为一个名为 src1-Branch 的分支,复制,添加 file4.txt 到 src1-branch 并提交它。
(3) 创建了另一个名为src2-branch 的分支,通过
切换到src2-branchhg 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'
然后我在网上搜索了一下,有人建议删除 .hg/wlock。成功了!
任何人都知道为什么问题首先发生?当我将 file4.txt 从 src2 添加到 src2-branch 时,我做错了什么吗?谢谢
最佳答案
我认为您可以使用 Mercurial 分支完成您想要的事情。您可以将对文件的更改跨分支分开,并可选择将这些更改 merge 到其他分支中。在您的 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 的 merge 命令将更改从一个分支引入另一个分支。从您最初的问题来看,听起来您想将默认 (src1) 分支中的更改带到 src2 分支中。在那种情况下,你会:
> hg up src2
> hg merge default
> hg commit -m "Merging default -> src2"
merge 将所有未 merge 的更改从源分支带到目标分支。如果您只想进行一些 更改,请使用 graft command如果您使用的是 Mercurial 2.0 或更高版本,或者 transplant extension如果是早期版本。
关于linux - 在哪里设置 mercurial 分支?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10954235/