Действительно нужны две головы в двух выдающихся ветвях - PullRequest
1 голос
/ 20 апреля 2019

У нас есть такая ситуация на TortoiseHg и Bitbucket, где хранится общий репозиторий:

enter image description here Слияние между заданиями dev1 и dev2 должно выполняться dev1; но dev1 не может увидеть работу dev2, потому что последний не может отправить свою работу в репозиторий bitbucket, так как он остановлен HG по этой причине «abort: push создает новую удаленную головку 2221daef6518 в ветви« Federico Development »»

Боюсь, что проблема возникла из-за одного коммита dev2, который отмечен на рисунке двумя красными кружками: он зафиксировал локальную ветвь федерико, в то время как федерико также работал и фиксировал на той же ветке.

Какой бы ни была первоначальная причина проблемы, мы бы хотели, чтобы dev2 перенес в общий репозиторий свою работу в качестве другой ветви ветки относительно dev1, чтобы dev1 мог выполнять работу dev2 и объединять две головы. Возможно ли какое-либо решение, чтобы получить этот результат?

Во-вторых, мы хотели бы понять происхождение проблемы для лучшего понимания и предотвратить ее в будущем:

  1. правда ли, что проблема возникла из-за коммита dev2 ono dev1 branch?
  2. почему HG по-прежнему останавливается, даже если после этого неудачного коммита dev2 изменил ветку со вторым коммитом?
  3. есть ли способ назначить каждому пользователю определенную ветку или, другими словами, запретить доступ к фиксации в определенной ветви некоторым пользователям?

1 Ответ

1 голос
/ 20 апреля 2019

Mercurial по умолчанию не позволяет отправлять несколько голов в одной ветви на сервер. В вашем случае dev2 создал новый коммит на ветке dev1, и это создало новый заголовок.

Теперь отвечаю на ваши вопросы один за другим:

  1. Да, проблема возникла из-за того, что dev2 создал новый коммит на ветви dev1, в результате чего у ветви dev1 было несколько голов.

  2. Коммиты в Mercurial являются частью информации о коммитах. Таким образом, первый коммит, который сделал dev2, все еще находится на ветке dev1 даже после того, как dev2 создал новый коммит на новой ветке.

  3. Да, вы можете написать ловушку для предварительного достижения этой цели.

Вот способ, которым вы можете решить эту проблему сейчас:

dev2 может толкать, используя дополнительную головку, используя флаг --force. Это подтолкнет новую голову к серверу. Таким образом, коммиты будут обмениваться, но вы получите несколько головок на ветке dev1, которые вам нужно будет решить путем слияния или каким-либо другим способом.

...