это рабочий процесс, который я сейчас использую для своих проектов SVN (я никогда не использую ветви SVN, а некоторые проекты также активно работают над другими людьми):
- на сервере, выполнитеначальный
git svn fetch
, что может занять несколько часов.Также создайте ветку 'build'. - на машине для разработки теперь выполняется быстро:
git clone srv://project.git, git checkout build
и git update-refs ..., git svn fetch
для восстановления ссылки на репозиторий svn - работа, фиксация, работаcommit, ...
- , чтобы проверить, что все нормально,
git push build
на сервер и запустить сборку в Hudson для этой ветви - , чтобы сохранить работу, чтобы я мог работать с ней издругой компьютер, также нажмите ветвь сборки
- , когда все будет выполнено, объедините коммиты в логических шагах (например, по одному для каждой ошибки), подтвердите svn и сбросьте все как
git checkout master, git merge build, git svn dcommit, git push, git checkout build, git rebase master, git push build
EnterSVN Externals.Я пробовал каждый скрипт здесь , но все они терпят неудачу.Мои внешние настройки настроены так:
/path/to/x x
/path/to/y/z y/z
/path/to/a/b.file a/b.file
, и сценарии делают такие вещи, как попытка создать /path/to/x
в корне файловой системы и git svn fetch /path/to/x
.Также отдельные файлы, кажется, вызывают больше проблем.(подвопрос 1: для какого формата svn: externals были написаны эти сценарии?)
Кажется, что сложно изменить один из сценариев для обработки моей ситуации и репликации структуры каталогов, которую я ищуправильно, но тогда я остаюсь с большой проблемой: если я изменяю файл в каталогах x и y / z, я не вижу способа объединить это в один коммит svn, и это одна из причин, по которой яначал использовать git.
Отсюда вопрос: есть ли способ, которым я могу воспроизвести вышеописанный рабочий процесс, используя только части определенного хранилища svn, таким образом, чтобы я мог выполнить svn dcommit вкорень?Я бы предпочел готовое к использованию решение, которое работает как на Linux, так и на Windows.
edit Я быстро взломал один из найденных скриптов и сделал его реплицирующим структуру каталоговСВН внешние.Я не могу клонировать отдельные файлы, но вот что выдает:
git svn clone -r HEAD srv://svn/repo/path/to/projects.sln
Initialized empty Git repository in xxx/projects.sln/.git/
Invalid filesystem path syntax: REPORT request failed on '/svn/repo/!svn/vcc/default':
Cannot replace a directory from within at yyy/git/libexec/git-core/git-svn line 5114
подвопрос 2: нельзя ли получить один файл через git svn?