2009-05-25 2 views

ответ

4

Я использовал расширение hg mqueue для редактирования истории. Кажется, что это сработало. Спасибо всем.

+1

ya, http: //mercurial.selenic. com/wiki/EditingHistory позволяет вернуться к изменениям и удалить отдельные изменения или внести изменения (удалить пароли) в своих версиях. – xster

34

Mercurial пытается очень тяжело хранить ваши данные в безопасности, поэтому вы можете вообще не изменять историю.

Это, как говорится, есть многочисленные расширения для Mercurial, что позволяет вам в любом случае легко изменить историю. Существует page on the wiki about editing history. Эта страница также объясняет последствия.

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

Если вы решили удалить его, я предлагаю использовать hg clone, чтобы получить копию без нее. Это безопасный путь, поскольку он всегда будет оставлять резервную копию. Если вы толкнул [z] в удаленный репозиторий:

[x] --- [y] --- [z] 

и теперь хотят, чтобы удалить его, а затем войти на сервер и сделать

hg clone -r y repo repo-without-z 

Тогда repo-without-z будет содержать все changests до сих [y] - то есть, [z] будут удалены:

[x] --- [y] 

Вы можете продолжать работать и нажмите новую ревизию:

[x] --- [y] --- [w] 

Если бы я вытащил [z] уже и ревизии в настоящее время тянуть [w] я вижу две головы в хранилище:

  [w] 
     /
[x] --- [y] --- [z] 

Это не опасно само по себе, - но люди могут быть удивлены. Если я удалю [z] из моего клона, я попаду в тот же репозиторий, что и вы. Но, как написано выше, это может оказаться непрактичным, если у вас много пользователей.

Вы также можете использовать MQ extension в полосе набор изменений на месте. Таким образом, вы не создадите новый клон.

Наконец, если вы уверены, что нажатие было последней операцией, выполняемой на сервере, то для удаления последней транзакции можно использовать hg rollback. Но не делайте этого, если вы единственный, кто может нажать на репозиторий, иначе вы можете отказаться от другой транзакции.

Если репозиторий находится на Bitbucket, то вы не можете войти на сервер. Но Bitbucket недавно добавила функциональность полосы в свой веб-интерфейс. Найдите «Управление репозитариями» в разделе «Админ».

+1

Спасибо за сообщение. Я действительно использую bitbucket, я пытался удалить фиксацию из репликации bitbucket, но кажется, что это невозможно. Даже используя полосу, битбакет говорит мне, что я занимаю много места (из-за войны, которую я загрузил). –

+4

Да, Bitbucket делает резервную копию разделенных ревизий, а резервная копия подсчитывается по вашей квоте :-( Вы можете удалить репозиторий на Bitbucket, создать его снова с тем же именем и нажать из своего местного клона. –

+1

Мой комментарий выше более недействителен, см. ниже [Jesper's] (http://stackoverflow.com/a/909290/110204). –

13

Bitbucket предлагает вам комплект (резервное копирование) при снятии, а это не счет против вашей квоты. Причина, по которой это делается, заключается только в том, что мы не сделали недействительным ключ кеша, определяющий, сколько места вы используете.

Это ошибка в нашей системе и будет исправлена.До тех пор будьте уверены, что набор изменений удален, а резервная копия бесплатна :-)

+6

Nice Jesper, спасибо за то, что бросил :-) –

1

У меня был подобный случай, когда я хочу, чтобы удалить объединенный филиал «А» от филиала ревизии «Dev» удаленно с помощью TortoiseHg:

  1. Создать филиал АА из родительской ветви ветви А в; его происхождения.
  2. Объедините A в AA (рабочий каталог) и убедитесь, что опция «Отменить все изменения из другой ревизии» отмечена.
  3. Объединить AA в ветку Dev (с сообщением фиксации, указывающим, что ветвь А были удалены).

Вы увидите, что изменения ветви А больше не существуют в Dev.

+1

Это сработало для меня, отличное решение. Я просто уточню, что для (2), я думаю, вы имеете в виду «слить А в АА» и выбросить. Это то, что я сделал в любом случае, а затем шаг 3 создал хороший коммит, который отменил все нежелательные изменения. –

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