Я нашел статью о рабочем процессе git здесь и попытался применить его к моему собственному проекту hg, кажется, что это какой-то беспорядок, когда я создаю ветку для каждой функции, потому что в git ветку можно удалить, а в hg ее можно только закрыть. так что это приведет к огромному количеству закрытых веток в репо, и это то, чего я не хочу видеть.
позже я погуглил другую статью, в которой рассказывается о рабочем процессе Hg здесь Я пробовал, и вроде неплохо, когда я единственный разработчик проекта, но когда я попытался добавить еще одного разработчика, история немного запуталась.
Я проверил это с тремя репозиториями
1, Base
2, devA ---> stands for developer A's repo
3, devB ---> stands for developer B's repo
Сначала я работал над devA, внося изменения в ветку default
devA и исправлял ошибки в ветке stable
devA. После этого я пушу devA в Base.
график devA:
в случае, если изображение сломано, текстовый график находится здесь:
@ summary: Merge with stable
|\ tag: tip
| | parent: 4:d2973e149720
| | parent: 5:3788143e99fc
| | date: Mon Jul 30 13:17:44 2012 +0800
| |
| |
| o changeset: 5:3788143e99fc
| | branch: stable
| | parent: 3:4a955d01ea44
| | date: Mon Jul 30 13:17:19 2012 +0800
| | summary: fix a bug in featureA
| |
o | changeset: 4:d2973e149720
| | parent: 2:8e106fcfa9bf
| | date: Mon Jul 30 13:16:46 2012 +0800
| | summary: finish featureA advance
| |
| o changeset: 3:4a955d01ea44
|/| branch: stable
| | parent: 1:7b81b986d485
| | parent: 2:8e106fcfa9bf
| | date: Mon Jul 30 13:16:01 2012 +0800
| | summary: Merge with default
| |
o | changeset: 2:8e106fcfa9bf
| | parent: 0:7d7dc422ec7c
| | date: Mon Jul 30 13:15:43 2012 +0800
| | summary: finish feature A
| |
| o changeset: 1:7b81b986d485
|/ branch: stable
| date: Mon Jul 30 13:14:49 2012 +0800
| summary: Create stable branch
|
o changeset: 0:7d7dc422ec7c
date: Mon Jul 30 13:14:21 2012 +0800
summary: Init commit
а потом я перешел на devB, так как хочу эмулировать параллельную работу, поэтому не стал тянуть с Base, вместо этого начинаю работать на ветке default
devB, а на ветке stable
devB делаю багфикс.
График devB похож на график devA
Вот проблема, когда я пытаюсь отправить изменения devB в Base, он говорит, что есть конфликт, и мне нужно объединить его локально, я вытащил изменения, а затем мой график истории в devB стал немного беспорядочным, потому что я получил default
devA. и stable
, поэтому в devB теперь есть две ветки default
и две ветки stable
.
что меня смутило, так это то, как в реальных проектах используется такой рабочий процесс, график ветвей mecurial здесь. Вроде все чисто, но как они это сделали?