Mercurial: как сжать / объединить указанные старые ревизии в одну? - PullRequest
1 голос
/ 29 августа 2011

У меня есть хранилище. В середине его жизненного цикла я удалил из него много ненужных файлов (я решил оставить их без изменений).

hg remove
hg commit

Репо становится все больше и больше.

И я решил избавиться от старых ревизий от начальной до ревизии, где было удалено много файлов (назовем это X). Другими словами, я хочу объединить эти ревизии (от начального до X) в одну начальную ревизию.

Но в то же время, чтобы сохранить историю следующих ревизий (X + 1 и т. Д.), Как они есть.

Я гуглил решение, но не смог.

И не нашел ничего умного, чем сделать это:

hg init newrepo
cd oldrepo
hg archive -r X newrepo
hg export -r X+1: -o "~/patches/%R-%h.diff"
cd newrepo
hg commit -A -m 'initial release (after archiving)'
hg import ~/patches/*.diff

И, черт побери, после нескольких успешно примененных патчей Я получаю:

Hunk #1 FAILED at xxx
Hunk #2 FAILED at xxx
2 out of 2 hunks FAILED -- saving rejects to file xxx.rej
abort: patch failed to apply

Что я делаю не так?

У меня 1 репо без веток (точнее, до ревизии X все ветви были объединены).

Второе решение было * HG конвертировать в SVN * HG конвертировать в Mercurial от Revisiob X + 1

Сбой при обратной трассировке Python (вероятно, это было вызвано тем, что в нашем репо было около 3K файлов).

Ответы [ 3 ]

1 голос
/ 29 августа 2011

Чтобы отфильтровать файлы из репозитория, вы хотите использовать hg convert (от Mercurial до Mercurial) с аргументом --filemap (подробности см. В документации).Имейте в виду, что измененные идентификаторы изменений (и идентификаторы всех их потомков) изменятся.

0 голосов
/ 23 сентября 2011
0 голосов
/ 29 августа 2011

Посмотрите на расширение Свернуть , которое, кажется, делает то, что вы хотите.

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