I'm trying to convert an SVN repo with hgsvn
and I have some commits where SVN properties where modified, but since Mercurial doesn't use those, it sees this as an empty commit and aborts. Is there any way to force this hg commit
to accept a commit that doesn't change anything?
I'm not familiar enough with the internals of hgsvn
to hack it to skip empty commits.
Вы можете пропустить эту фиксацию, если добавите локальный тег svn. $ REVNUM в головную ревизию (= ревизия, которая теперь также имеет тег 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
и продолжение для импорта.
Но сделайте резервную копию, прежде чем пытаться это сделать.
Когда мне раньше требовались пустые коммиты в p4 и hg, я просто использовал файл, который был назначен пустым коммитом. Просто выгрузите какую-нибудь случайную строку (я обычно использую время и дату) в выброшенный файл и hg commit
прочь ....
Я думаю, что вы не можете сделать пустую фиксацию в mercurial. Вот тема, объясняющая почему.