git & svn externals - окончательное решение?

это рабочий процесс, который я сейчас использую для своих проектов svn (я никогда не использую ветки svn, и некоторые проекты активно работают над другими людьми):

  • на сервере выполните начальную git svn fetch , что может занять несколько часов. Также создайте ветку 'build'.
  • на машине разработки клонирование теперь выполняется быстро: git clone srv: //project.git, git checkout build , за которым следует git update-refs .. ., git svn fetch , чтобы восстановить ссылку на репозиторий svn
  • work, commit, work commit, ...
  • , чтобы проверить, все ли в порядке, git push build на сервер и запуск сборки в Hudson для этой ветки
  • для хранения работы, чтобы я мог работать с ней с другой машины, также нажмите build branch
  • когда удовлетворено, объедините коммиты вместе в логические шаги (например, по одному для каждой ошибки), выполните фиксацию в svn и сбросьте все, например 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?

20
задан Community 23 May 2017 в 11:44
поделиться