это рабочий процесс, который я сейчас использую для своих проектов svn (я никогда не использую ветки svn, и некоторые проекты активно работают над другими людьми):
git svn fetch
, что может занять несколько часов. Также создайте ветку 'build'. git clone srv: //project.git, git checkout build
, за которым следует git update-refs .. ., git svn fetch
, чтобы восстановить ссылку на репозиторий svn git push build
на сервер и запуск сборки в Hudson для этой ветки git checkout master, git merge build, git svn dcommit, git push, git checkout build , git rebase master, git push build
Введите svn 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: внешний формат, для которого тогда были написаны эти сценарии?)
Кажется, нетрудно изменить один из сценариев, чтобы справиться с моей ситуацией и правильно воспроизвести структуру каталогов, за которой я следую, но тогда у меня осталась серьезная проблема : если я изменяю файл в каталогах x и y / z, я не вижу способа объединить это в один коммит svn, и это одна из причин, по которой я начал использовать git.
Следовательно вопрос: есть ли способ воспроизвести описанный выше рабочий процесс, используя только части определенного репозитория svn, таким образом, чтобы я мог выполнить svn dcommit в корне? Я бы предпочел готовое решение, которое работает как в Linux, так и в Windows.
edit Я быстро взломал один из найденных мной скриптов и заставил его копировать структуру каталогов внешних файлов svn. Я не могу клонировать отдельные файлы, вот результат:
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?