PHP: как «вырезать» мой массив?

Трудно поверить, но мне кажется, что общая идиома Makefile ">$@

Как я могу изменить r0 , чтобы выглядело так, будто я добавил .hgignore , когда я создал свой репозиторий, или вставил фиксацию перед моим текущим r0 ?

Я только что преобразовал огромное SVN-репо с помощью hgsvn в mercurial. Потребовалось несколько часов и около дюжины ветвей, чтобы получить все это. Моя проблема сейчас в том, что .hgignore не зафиксирован, поэтому, когда я hgimportsvn ветвь, .hgignore , похоже, не идет с ним. Я хотел бы вставить этот файл как часть r0 или вставить его перед этим (и сдвинуть все на 1). Я также пробовал зафиксировать это в конце моей проверки ствола Mercurial, но кажется, что hgimportsvn всегда клонирует (ветки?) из той же ревизии Mercurial, из которой была создана моя ветвь SVN, поэтому .hgignore снова теряется.

8
задан Martin Geisler 28 August 2010 в 11:28
поделиться

1 ответ

Возможно, вам понадобится что-то вроде ConvertExtension. Проверьте параметр --splicemap.

Чтобы создать новую историю с файлом .hgignore, добавленным в качестве первой ревизии:

  1. Создайте новый репозиторий, единственной ревизией которого является фиксация .hgignore.
  2. Создайте файл splicemap, содержащий два 40-символьных хэша: 0-й версии вашей текущей базы данных и 0-й версии вашей новой базы данных.
  3. Запустите 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
5
ответ дан 5 December 2019 в 23:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: