Можете ли вы указать, какие ветви SVN с GIT SVN? - PullRequest
3 голосов
/ 15 января 2009

Я думаю, что мой вопрос чем-то похож на CaptainPicard , но достаточно разнороден, поэтому я чувствую себя обязанным спросить, вот и все.

У меня есть старый SVN-репозиторий с около 7500 ревизиями, и часть этих 7500 ревизий - несколько довольно больших .fla файлов. И эти .fla файлы существуют в нескольких ветвях, которые были созданы. В результате этого мой каталог .git после импорта становится довольно большим, примерно 3,5 ГБ, если я получу весь ствол, все ветви и все теги. Чтобы объединить некоторые из них, я сделал еще один svn-клон только каталога в транке, с которым я хотел работать, но включение всех веток, очевидно, сводит всю историю и объекты для них.

Итак, мой вопрос заключается в следующем: есть ли способ сказать git, что он выбирает только определенные ветки? Например, только выбирать ветки, начинающиеся с некоторого идентификатора (например, mybranch)?

Обновление для ясности: Я знаю, что могу указать git svn init / clone на одну конкретную ветку. То, что я хочу сделать, это указать на множество ветвей. Например, вместо соответствующих ветвей / * только ветви, соответствующие mybranchset *

Ответы [ 2 ]

1 голос
/ 15 января 2009

В командах git svn вы можете использовать подстановочный знак звездочки только для указания всех членов каталога (directoryname/*), но не вариантов имени файла (fileprefix*). Это может измениться в будущем, если git svn будет пересмотрен, чтобы использовать новое отслеживание слияния SVN.

Поскольку Git хранит только указатель на фиксацию для каждой ветви (а не дубликат каталога соответствующих файлов), репо Git будет значительно меньше, как только вы его перепакуете, как говорит анонимный ответ. К сожалению, Git не может хранить наборы изменений для ваших файлов Flash, как это происходит при фиксации текстовых файлов, поэтому они будут дублироваться при изменении.

Я предлагаю вам использовать

$ git gc --aggressive  

для перепаковки вашего репо. Он удаляет дубликаты и обрабатывает больше оптимизаций, чем git repack.

0 голосов
/ 15 января 2009

Вы можете указать git svn init с помощью URL-адреса svn по вашему выбору, включая указание на конкретную ветку или даже на часть ветви.

Вам также следует подумать о создании "git repack -f -a -d --window = 250", чтобы узнать, может ли git найти способ уменьшить размер хранилища на 3,5 ГБ.

...