Меркуриальные вопросы, как обращаться с разными головами - PullRequest
4 голосов
/ 05 сентября 2011

Мой репозиторий не может сливаться, не может извлекать и не может обновлять только потому, что он не может просто закрыть ненужные головы, которые были ошибками. Кажется, у меня есть изменения в hg, что усложняет слияние. Я ожидаю, что изменения (головы) будут довольно неактуальными, и я хочу включить только одну голову и только одну ветвь.

$ hg merge
branch 'default' has 4 heads    
$ hg merge -r e571b17295e9
outstanding uncommitted changes (use 'hg status' to list changes)
$ hg commit -m ''
nothing changed

Я забыл где-нибудь hg push или hg pull? Если ничего не изменилось, то почему говорится о незавершенных незафиксированных изменениях? Это мой последний вывод из головы hg. Как мне узнать больше о том, что это были за изменения? Почему почти невозможно сделать что-то столь же простое, как избавиться от одной из голов? Мне не интересно, как hg определяет набор изменений, ревизию, заголовок, ветку и т. Д., Я просто хочу, чтобы простые действия были простыми.

$ hg head
ändring:     233:88de4be7943c
märke:       tip
användare:   niklasro
datum:       Mon Sep 05 18:30:37 2011 +0000
kortfattat:  addremove

ändring:     176:e571b17295e9
användare:   tekniklas
datum:       Sat Jan 08 04:45:07 2011 +0000
kortfattat:  twitter support added

ändring:     159:f8d974793b12
förälder:    157:ef1d955b9236
användare:   tekniklas
datum:       Sat Dec 18 17:05:45 2010 +0000
kortfattat:  remove

ändring:     89:008a2ac46b4f
användare:   tekniklas
datum:       Sun Aug 01 07:10:40 2010 +0000
kortfattat:  classifiedsmarket/market/market_ad_preview.html

Я не совсем понимаю, как использовать Mercurial, и я хочу больше контроля, например. посмотрим, что произошло в эти даты, когда было несколько так называемых голов. Я в основном единственный разработчик в этом репозитории, но хочу иметь возможность обновлять его из разных мест. Я спрашивал ранее об этих изменениях, и я не могу понять, как сделать hg pull для синхронизации из репозитория в локальный. Я могу сделать клон hg и добавить изменения, но перечисленные выше изменения означают, что я забыл что-то синхронизировать и хочу упростить

прервать: несинхронизированные удаленные изменения?

Как увидеть разницу ртути

Как избавиться от старых ртутных головок?

Теперь hg diff, hg status и hg входящие не отображают никаких изменений, и мне удалось очистить репозиторий (который находится на googlecode.com) и даже обновить файлы через веб-интерфейс googlecode.com, поэтому я хочу чтобы упростить синхронизацию между хранилищем и локальным хранилищем.

Спасибо за любой совет

Редактировать: Я вижу, что набор изменений 176: e571b17295e9 не важен, и я просто хочу объединить его с наконечником без каких-либо реальных изменений, но получить 1 голову.

enter image description here

Итак, я пытаюсь понять, что набор изменений не имеет отношения к теме, и меня это не волнует:

$ hg diff -c e571b17295e9
diff -r f50d4c4461e5 -r e571b17295e9 classifiedsmarket/app.yaml
--- a/classifiedsmarket/app.yaml    Thu Jan 06 11:36:10 2011 +0000
+++ b/classifiedsmarket/app.yaml    Sat Jan 08 04:45:07 2011 +0000
@@ -4,6 +4,10 @@
 api_version: 1
 default_expiration: "400d 5h"
 handlers:
+- url: /twitter
+  script: /twitter_oauth_handler.py
+- url: /oauth.*
+  script: /twitter_oauth_handler.py
 - url: /
   script: i18n.py
 - url: /li

Так зачем мне так много администрирования для наборов изменений, которые вообще не имеют значения?

Так что теперь я пробую другой способ, который тоже не работает. Отлично. Выберите Mercurial, и вы не сможете заниматься разработкой, так как все, что вы делаете, это пытаетесь потерять мусор:

hg update -r 123
hg commit --close-branch -m 'Closing old branch'
hg update -C default

Моя попытка:

$ hg update -r e571b17295e9
avbryter: crosses branches (merge branches or use --clean to discard changes)

Отлично, ничего не работает, и то, что я пытаюсь сделать, действительно просто. Я еще немного пытаюсь понять, что невозможно сделать что-то действительно простое и как мы теряем время, пытаясь сделать самое простое, и как Mercurial не может сделать что-то простое:

$ hg head
ändring:     235:68bc6873fafb
märke:       tip
användare:   niklasro
datum:       Tue Sep 06 11:53:32 2011 +0000
kortfattat:  added fblist

ändring:     176:e571b17295e9
användare:   tekniklas
datum:       Sat Jan 08 04:45:07 2011 +0000
kortfattat:  twitter support added

ändring:     159:f8d974793b12
förälder:    157:ef1d955b9236
användare:   tekniklas
datum:       Sat Dec 18 17:05:45 2010 +0000
kortfattat:  remove

ändring:     89:008a2ac46b4f
användare:   tekniklas
datum:       Sun Aug 01 07:10:40 2010 +0000
kortfattat:  classifiedsmarket/market/market_ad_preview.html

$ hg merge -r e571b17295e9
avbryter: outstanding uncommitted changes (use 'hg status' to list changes)

Поэтому я попробую другой способ, чтобы прояснить, как VCS полностью мешает мне заниматься разработкой, и эти глупые ревизии вместо этого не будут работать даже тогда, когда вы пытаетесь сделать это очень просто:

$ hg update -r e571b17295e9
avbryter: crosses branches (merge branches or use --clean to discard changes)

Я закончил создание нового локального каталога для каждой ревизии, которую хотел закрыть, клонировал ревизию, закрыл ее, зафиксировал и вытолкнул из локального клона, и, похоже, это сработало, но правильно ли я это сделал? Кажется, я все еще могу «открыть» закрытые головы, что хорошо, но я еще не пытался синхронизировать с изменениями других людей, и я не пытался внести изменения через webui в googlecode.com и вытащить / объединить с локальным клон.

Итак, я закрыл незафиксированные (?) Наборы изменений в mercurial, клонировав 3 ревизии и закрыв их по одной вместо просто hg head -r -close или какой-то простой передачи hg, которая может обрабатывать незафиксированные изменения.

Теперь это выглядит решенным, и я могу видеть, что было несколько голов:

o  changeset:   181:bb0545ceff33
|  parent:      179:b03d10fc4260
|  user:        tekniklas
|  date:        Sun Jan 09 04:39:33 2011 +0000
|  summary:     twitter support
|
| o  changeset:   180:9bbefafbdb16
| |  parent:      178:e571b17295e9
| |  user:        niklasro
| |  date:        Tue Sep 06 14:09:19 2011 +0000
| |  summary:     close badbranch, this approach never worked
| |
o |  changeset:   179:b03d10fc4260
| |  parent:      177:f50d4c4461e5
| |  user:        tekniklas
| |  date:        Sun Jan 09 04:32:12 2011 +0000
| |  summary:     removed aeoid
| |
| o  changeset:   178:e571b17295e9
|/   user:        tekniklas
|    date:        Sat Jan 08 04:45:07 2011 +0000
|    summary:     twitter support added
|
o  changeset:   177:f50d4c4461e5
|  user:        tekniklas
|  date:        Thu Jan 06 11:36:10 2011 +0000
|  summary:     i18n reports

...

o  changeset:   163:aa078cbdbbe5
|  parent:      161:51ec76c45cf0
|  user:        tekniklas
|  date:        Sat Dec 18 19:20:25 2010 +0000
|  summary:     fb login
|
| o  changeset:   162:37951de836dc
| |  parent:      160:f8d974793b12
| |  user:        niklasro
| |  date:        Tue Sep 06 14:17:18 2011 +0000
| |  summary:     close badbranch, this approach never worked
| |
o |  changeset:   161:51ec76c45cf0
| |  parent:      159:652958f895e2
| |  user:        tekniklas
| |  date:        Sat Dec 18 19:19:41 2010 +0000
| |  summary:     fb login
| |
| o  changeset:   160:f8d974793b12
| |  parent:      158:ef1d955b9236
| |  user:        tekniklas
| |  date:        Sat Dec 18 17:05:45 2010 +0000
| |  summary:     remove
| |
o |  changeset:   159:652958f895e2
| |  parent:      157:9658adb05792
| |  user:        tekniklas
| |  date:        Sat Dec 18 19:19:17 2010 +0000
| |  summary:     fb login
| |
| o  changeset:   158:ef1d955b9236
|/   user:        tekniklas
|    date:        Sat Dec 18 17:05:00 2010 +0000
|    summary:     removed
|
o  changeset:   157:9658adb05792
|  user:        tekniklas
|  date:        Fri Dec 17 21:57:36 2010 +0000
|  summary:     tabs

...

o  changeset:   92:9e48ce2a444e
|  parent:      90:a381c59aedc1
|  user:        ubuntu@ubuntu
|  date:        Mon Aug 02 04:30:31 2010 +0000
|  summary:     coordinates
|
| o  changeset:   91:84facd40c690
| |  parent:      89:008a2ac46b4f
| |  user:        niklasro
| |  date:        Tue Sep 06 14:18:58 2011 +0000
| |  summary:     close badbranch, this approach never worked
| |
o |  changeset:   90:a381c59aedc1
| |  parent:      88:cfcd7313278d
| |  user:        ubuntu@ubuntu
| |  date:        Mon Aug 02 04:30:16 2010 +0000
| |  summary:     logo
| |
| o  changeset:   89:008a2ac46b4f
|/   user:        tekniklas
|    date:        Sun Aug 01 07:10:40 2010 +0000
|    summary:     classifiedsmarket/market/market_ad_preview.html
|
o  changeset:   88:cfcd7313278d
|  user:        ubuntu@ubuntu
|  date:        Sun Aug 01 05:58:50 2010 +0000
|  summary:     previewform

...

Ответы [ 2 ]

2 голосов
/ 06 сентября 2011

Посмотрите на график изменений, и он будет вам более понятен:

Это можно сделать через:

  • hg serve и откройте веб-браузер для http://localhost:8000
  • hg glog, если вы включили расширение журнала графа (используйте -l 20, чтобы просмотреть только 20 последних коммитов)
  • Используйте TortoiseHg , если доступно в вашей ОС.

Это будет выглядеть примерно так:

TortoiseHg revision log view

Чтобы объединить изменения в этих головах, вам нужно объединить их. См. 68040 выше, которая объединяет две головы в одну. Это необходимо, если у вас есть коммиты, поступающие из нескольких мест одновременно.

2 голосов
/ 06 сентября 2011

Вы можете запустить

hg diff -c R

чтобы увидеть, что вы изменили в наборе изменений R. Вы также можете использовать программу просмотра журналов, например TortoiseHg, чтобы увидеть это и посмотреть, где наборы изменений появляются на графике изменений.

Основной рабочий цикл

# work
hg commit
# work
hg commit
hg push
# aborts: multiple remote heads
hg pull
# hg heads show two heads
hg merge
hg commit
hg push
...