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