Как я могу заставить Mercurial принять пустой коммит - PullRequest
8 голосов
/ 25 августа 2010

Я пытаюсь преобразовать репозиторий SVN с hgsvn, и у меня есть некоторые коммиты, где свойства SVN были изменены, но поскольку Mercurial не использует их, он видит это как пустой коммит и прерывает работу. Есть ли способ заставить hg commit принять коммит, который ничего не меняет?

Я недостаточно знаком с внутренностями hgsvn, чтобы взломать его, чтобы пропустить пустые коммиты.

Ответы [ 5 ]

3 голосов
/ 25 августа 2010

Я думаю, что вы не можете сделать пустой коммит в Mercurial.Вот ветка, объясняющая, почему .

3 голосов
/ 25 августа 2010

Вы можете пропустить этот коммит, если добавите локальный тег svn. $ REVNUM в ревизию head (= ревизия, которая также имеет тег svn. ($ REVNUM-1) сейчас).Затем вы можете продолжить с hgpullsvn.

Скажите, что ваш импорт находится в этом состоянии (последняя импортированная версия 15800, только для свойства - 15801):

$ hg log -l1
changeset:   1234:123456789abc
branch:      trunk
tag:         tip
tag:         svn.15800
parent:      1233:cba987654321
user:        Rudi <rudi@example.com>
date:        Tue Aug 24 11:42:23 2010 +0200
summary:     Foobar

$ svn info
Path: .
URL: svn+ssh://example.com/foobar/trunk
Repository Root: svn+ssh://example.com/foobar
Repository UUID: 26c7c274-8ed1-4e7f-bdc1-5c767a948b10
Revision: 15801
Node Kind: directory
Schedule: normal
Last Changed Author: rudi
Last Changed Rev: 15801
Last Changed Date: 2010-08-24 14:00:29 +0200 (Di, 24 Aug 2010)

Затем вы просто добавляетеТег svn.15801:

$ hg tag -l -r 123456789abc svn.15801

и продолжение импорта.

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

1 голос
/ 16 октября 2017

Согласно комментарию @ vorrtex к исходному вопросу, самый простой метод принудительного пустого коммита в Mercurial выглядит следующим образом:

  1. Добавить новый файл (скажем, Dummy.txt) и зафиксировать.
  2. hg forget Dummy.txt
  3. hg commit --amend

Это удалит Dummy.txt из предыдущего коммита, оставив его пустым.(Вы можете использовать, например, TortoiseHg для шага 1, но вам нужно будет использовать инструмент командной строки для шагов 2 и 3.)

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

1 голос
/ 25 августа 2010

Когда мне раньше требовались пустые коммиты в p4 и hg, я просто использовал файл, который был выделен, чтобы быть пустым коммитом. Просто скопируйте случайную строку некоторого вида (я обычно использую время и дату) в одноразовый файл, и hg commit away ....

0 голосов
/ 04 января 2014

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

Вы можете сделать «пустой» коммит путем импорта почти пустого патча.Я экспортировал патч, удалил все изменения в нем, оставив только 3 строки (diff ..., ---... и +++ ...), и импортировал его с hg import --bypass --message ...

...