Где установить ветку в Mercurial?
Я новичок в 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. Обратите внимание, что оба файла file4 и file5 в каталоге src1 имеют одно и то же имя, что и имена в каталоге src2. Если я переместлю все файлы в одну и ту же директорию, я не смогу отличить какую версию от какой. Вот почему я сохранил одну версию file4 и file5 в каталоге src1 и другую версию file4 и file5 в каталоге scr2. У меня есть учетная запись команды в bitbucket, и я вставил каталог src1 в учетную запись. Таким образом, битбакет содержит все файлы в 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-branch by
hg update src2-branch
скопировал file4(version2) из каталога src2 в текущий каталог
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? Спасибо
1 ответ
Я думаю, что вы можете достичь того, что вы хотите, используя ветки 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"
Объединение переносит все незапутанные изменения из ветви-источника в ветку-адресат. Если вы хотите внести только некоторые изменения, используйте команду graft, если вы используете Mercurial 2.0 или более позднюю версию, или расширение трансплантата, если в более ранней версии.