2016-05-09 4 views
1

Итак, я решил использовать инструмент svn2git после солидной рекомендации. Чтобы перенести репозиторий, мне нужен файл авторов и файл правил, а также сам репозиторий. Я составил все эти три и поместил их в каталог, который я называю myRepository_test. Я ожидаю, что мой новый репозиторий git будет здесь после миграции.svn2git migration: Правила

Вот структура репозитория я в настоящее время:

- myRepository 
    -- myRepository.release 
    -- myRepository.mapping 
    -- myRepository.base 
    -- .. 

В общей сложности у меня есть около 30 проектов здесь.

Настоящим я разделяю мои файлы, которые будут использоваться:

authormap.txt:

egent = Emma Gent <[email protected]> 
gstar = Gabriel Star <[email protected]> 
. 
. 

В настоящее время, я хотел бы попробовать только для 2-х проектов, так:

myRepository.rules:

create repository myRepository 
end repository 

# main history 

match /trunk/myRepository/myRepository.release/ 
    repository myRepository 
    branch master 
end match 

match /trunk/myRepository/myRepository.mapping/ 
    repository myRepository 
    branch master 
end match 

# Ignore everything else 
match/
end match 

, который принимает окончательное команду:

./svn-all-fast-export --identity-map authormap.txt --rules myRepository.rules --add-metadata http://address/svn/myRepository 

, который заканчивается как:

Loading rules from: "myRepository.rules" 
Loading rules from "myRepository.rules" 
Could not read the rules file: myRepository.rules 
Aborted (core dumped) 

Я не очень уверен, о содержании файла правил, было бы неплохо, если бы кто-то может помочь мне о том, что ,

Заранее спасибо.

ответ

1

Сообщение, которое вы получаете, не означает, что синтаксис является фиктивным, синтаксис выглядит отлично. На самом деле он не может найти или прочитать сам файл. Вы вызываете svn-all-fast-export, откуда находится каталог, в котором находится ваш файл myRepository.rules. И есть ли у вас права на чтение файла в качестве пользователя, который вы называете svn-all-fast-export?

Что касается содержимого файла правил, я не думаю, что он полностью корректен. Вы сохраняете содержимое myRepository.release и myRepository.mapping в корень вашего репозитория. Если это было то, что вы намеревались, все в порядке. Если нет, вероятно, вы должны использовать правило prefix внутри блока match, чтобы содержимое было добавлено в отдельные подкаталоги. Но вы увидите это после того, как сможете успешно запустить инструмент в любом случае.

И еще одно примечание: выражения match являются регулярными выражениями, поэтому вы можете избежать . и иметь match /trunk/myRepository/myRepository\.release/. Или, если вы действительно хотите, чтобы содержимое в той же папке, даже

match /trunk/myRepository/myRepository\.(release|mapping)/ 
    repository myRepository 
    branch master 
end match 

или если вы хотите SUBDIRS

match /trunk/myRepository/myRepository\.(release|mapping)/ 
    repository myRepository 
    branch master 
    prefix \1 
end match 

или

match /trunk/myRepository/(myRepository\.(release|mapping))/ 
    repository myRepository 
    branch master 
    prefix \1 
end match 
+0

Ах да, эти папки (отображение, выпуск и т.д.) должны быть отдельными подкаталогами в репозитории, спасибо за улов. Так хорошо, добавляя 'префикс \ 1'. Point принят относительно '.' тоже, сделано. Наконец, я запускаю скрипт из того же каталога, где мои правила и файлы автора. Должен ли я запускаться из папки 'svn2git', где сценарий изначально находится (как он там установлен)? –

+1

Я не смог получить последние два предложения. Но вам нужно запустить 'svn2git', откуда вы хотите, чтобы результирующий репозиторий Git был найден. Для каждого репозитория, который вы сконфигурировали в файле правил, у вас будет вероятный именованный подкаталог с созданным репозиторием Git. Аргументы '--rules' и' --identity-map' являются относительными путями к тем файлам, из которых вы выполняете программу. Поэтому, если вы выполните его из каталога, где находятся файлы, у вас либо есть опечатка в имени файла, либо у вас нет прав на чтение для файла. – Vampire

+0

Я сделал это, на этот раз он дал другую ошибку. 'Создание нового хранилища«myRepository» SVN: Не удается открыть файл«HTTP: // адрес/SVN/myRepository/Формат»: Нет такого файла или каталога Не удалось открыть repository' почему он ищет что '/ format' в любом случае? –