Трудно поверить, но мне кажется, что общая идиома Makefile ">$@
Как я могу изменить r0
, чтобы выглядело так, будто я добавил .hgignore
, когда я создал свой репозиторий, или вставил фиксацию перед моим текущим r0
?
Я только что преобразовал огромное SVN-репо с помощью hgsvn в mercurial. Потребовалось несколько часов и около дюжины ветвей, чтобы получить все это. Моя проблема сейчас в том, что .hgignore
не зафиксирован, поэтому, когда я hgimportsvn
ветвь, .hgignore
, похоже, не идет с ним. Я хотел бы вставить этот файл как часть r0
или вставить его перед этим (и сдвинуть все на 1). Я также пробовал зафиксировать это в конце моей проверки ствола Mercurial, но кажется, что hgimportsvn
всегда клонирует (ветки?) из той же ревизии Mercurial, из которой была создана моя ветвь SVN, поэтому .hgignore
снова теряется.
Возможно, вам понадобится что-то вроде ConvertExtension. Проверьте параметр --splicemap
.
Чтобы создать новую историю с файлом .hgignore, добавленным в качестве первой ревизии:
hg convert --splicemap splice_filename
Это добавит каждую ревизию в текущей базе данных в новую базу данных. Карта сплайсинга определяет редактирование родительских элементов, поэтому, если ревизия 0 текущей базы данных получает родительскую ревизию 0 новой базы данных.
Ниже приведен пакетный файл Windows, который создает базу данных с 3 редакциями и базу данных с 1 редакцией с файлом .hgignore в ней, соединяя их вместе. Результат должен быть тем, что вы ищете. Если у вас большая исходная база данных, это может занять некоторое время, так как вся история исходной базы данных перезаписывается в целевую базу данных.
@echo off
@REM Create a 3-revision database
hg init current
cd current
echo >file1
hg add
hg ci -m file1
echo >file2
hg add
hg ci -m file2
echo >file3
hg add
hg ci -m file3
@REM Add the first revision to the splice map
hg log -r 0 --template "{node} " > ..\map
@REM Display the result
hg log
cd ..
@REM Create a 1-revision database
hg init ignore
cd ignore
echo glob:*.txt>.hgignore
hg add
hg ci -m ignore
@REM Specify this node as the parent of the other
@REM database's first revision in the splice map
hg log -r 0 --template "{node}\n" >> ..\map
hg log
cd ..
@REM Here's the resulting splice map
type map
@REM Make a copy to store the result
hg clone ignore result
@REM Add revisions from "current" to "result" honoring
@REM the splice map
hg convert current result --splicemap map
@REM Display the result
cd result
hg log