В Mercurial как линия может исчезнуть без слияния? - PullRequest
2 голосов
/ 07 февраля 2012

Используя mercurial, я столкнулся со странной проблемой, когда линия от одного коммиттера исчезла в какой-то момент на временной шкале, и я не могу объяснить, почему это так.

Журнал выглядит так:

changeset:   172:xyz123
parent:      76:pqr345
user:        barry baggings
date:        Mon Jan 16 0:12:43 2012 +0000
summary:     blah blah blah

changeset:   171:opq123
parent:      165:abc234
user:        mary moggings
date:        Mon Feb 01 1:12:41 2012 +0000
summary:     naw naw naw

Выполнение: hg diff -r 171 -r 172 дает это для abc.py (заголовок опущен):

print "context line1"
- print "i need this line!"
print "context line2"

Данный мод print "i need this line! определенно был введен в 171: opq123, но он снова пропалв 172: xyz123,

Но разница между 76 и 172 не показывает модов для abc.py!Как Барри может перепрыгнуть через изменения Мэри?

Неужели я просто неправильно понимаю, как все это работает?У меня довольно приличный опыт в таких вещах, как CVS и SVN, но DVCS иногда заставляют мою голову болеть ... может кто-нибудь объяснить?

Я немного подозрительно, что это потому, что мы находимся на Mercurial 1.7.1 - может этобыть ошибкой?

1 Ответ

6 голосов
/ 07 февраля 2012

Это отдельные заголовки, с 172, не основанными на 171. График, полученный, если у вас включено расширение graphlog и вы запускаете hg glog, или, как вы можете видеть визуально из hgweb, если вы запускаете hg serve, откройте егов браузере и нажмите на ссылку «график», показывает ее, возможно, более четко, чем «родительские» значения наборов изменений.

o    changeset:   172:xyz123
|    parent:      76:pqr345
|    user:        barry baggings
|    date:        Mon Jan 16 0:12:43 2012 +0000
|    summary:     blah blah blah
|    
| o  changeset:   171:opq123
| |  parent:      165:abc234
| |  user:        mary moggings
| |  date:        Mon Feb 01 1:12:41 2012 +0000
| |  summary:     naw naw naw
| |

Это ясно показывает, что набор изменений 172 не основан на наборе изменений 171.Таким образом,в сравнении их, изменение могло произойти в другом месте.Вы не сравниваете предка и потомка, вы сравниваете двоюродных братьев и сестер в некоторой степени.

Итак, хотя вы ввели его в 171, потому что 172 не основан на 171, он не получает добавлениелиния.Фактически, слияние - это то, что вам нужно, чтобы получить изменение, чтобы сделать набор изменений, основанный как на 171, так и на 172 (и их предках, пока они не сходятся).

Вы вполне можетеиметь больше голов, которые вы хотите объединить;Вы можете использовать hg heads, чтобы посмотреть на них.hg serve также может быть очень полезным для понимания таких вещей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...