2009-09-02 4 views
4

У меня есть два несвязанные хранилища «общественность» и «развивать»:Merge наконечник от неродственного хранилища с Mercurial

prj/ 
    public/ 
    develop/ 

«развивать» имеет много фиксаций, потому что именно здесь я работаю. Возможно, даже несколько головок Время от времени я хочу опубликовать снимок хранилища разработки.

Из папки я мог бы сделать это:

>hg pull -f ../develop 
>hg merge 
>hg commit -m "alpha2" 

Но это также будет тянуть полную историю из набора изменений «разработки» к «общественности» (который не то, что я хочу).

Я также могу удалить все файлы из 'public', кроме подпапки '.hg'. Затем вручную скопировать все файлы из каталога «разработки» и сделать

>hg commit -m "alpha2" 

Но тогда я должен «добавить» новые файлы «удалить» устаревшие файлы и «переименовать» снова перемещали файлы.

Использование опции -A с фиксацией будет слепо добавлять/удалять все файлы, даже если они неконтролируемы в репозитории 'development'.

Там должно быть более эффективный способ сделать это ;-)

ответ

5

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

  1. использование ConcatenatingChangesets присоединиться все изменения из разработки в единую результате ревизию в общественных -или-
  2. удалить все файлы в общественных местах, сделать «архив» в рт.ст. развития и расширения это публично - вы получите контролируемые файлы на LY -ило
  3. использования «рт.ст. манифест» в разработке к власти xargs подвинуться только файлы, которые вы хотите -или-
  4. сделать «-r дифф рт.ст. последних набор изменений в публичном -r отзыва 'в разработке, а затем применить этот итоговый diff, используя «hg import» публично, и вы будете иметь полные изменения как единый набор изменений публично

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

Смежные вопросы