2013-07-24 2 views
0

Пусть существуют Git репо со следующей структурой каталогов (он был преобразован из SVN):как переименовать/объединить каталоги по мерзавцем для всех фиксаций

/ 
Release 1 
    sub_dir1 
    somefiles1 
    sub-dir2 
    somefiles2 
Release 2 
    sub_dir1 
    somefiles1 
    sub-dir2 
    somefiles2 
Release 3 
    sub_dir1 
    somefiles1 
    sub-dir2 
    somefiles2 
... 

Аннотация к истории SVN репо:

Every год, какой-то кузнец взял последнюю версию и скопировал ее в новый релиз со следующим номером в том же репо. Таким образом, структура sub-dir/files для любых выпусков почти одинакова. Но каждый релиз имеет разные периоды истории.


для каждой фиксации (отверстие репо) Как: 1 переименовывать все ReleaseX корнями в одну папку с именем "Release"? 2 сохранить/объединить историю фиксации для любых файлов всех выпусков?

сусло Результат РЕПО выглядит следующим образом:

/ 
Release 
    sub_dir1 
    somefiles1 
    sub-dir2 
    somefiles2 

В качестве альтернативы можно переконвертировать каждый ReleaseX из SVN в отдельный repoX. Чем для каждого repoX мне нужно переименовать ReleaseX в Release. Чем мне нужно объединить все репозитории ... Ugrhh. Но я думаю, что это rakerway

+0

Вы не поменяете структуру папки? Можете ли вы передать каждую папку отдельно? –

+0

для чего? Мне нужно ориентироваться в проекте, как показано в quastion requirment. Структура папок в разделе «Релиз» представляет собой структуру проекта, поэтому его нельзя реструктурировать. фиксировать папку отдельно? – Andrey

ответ

0

Текущий подход кажется сложным.

Что-то жевать:

Рассматривали ли вы создавать отдельные ветви для каждого выпуска, по сравнению с созданием в новый каталог каждый раз? быстрый git checkout release-1 бы вас к высвобождению 1 источник - подобный cd release-1/

 
--o---o---o---o---o---o---o---o---o---o---o---o---o---o-Master/Latest Release 
    |    |     | 
    \--release-1 \--release-2  \--release-3 

Это позволяет git merge любой филиал (ы) вместе, что вы хотите. Этот подход также может сократить размер вашего репо (бонус!), Что всегда полезно для повышения производительности.

Возможное вдохновение: http://nvie.com/posts/a-successful-git-branching-model/

Это также позволяет легко заплат. Вы можете сделать исправление на release-1, а затем легко создать патчи для других выпусков.

+0

спасибо. Я сделал небольшой скрипт, который проверил каждую фиксацию из svn в рабочий каталог git, но всегда переименовывает «ReleaseX» в каталог «Release» и проверяет фиксацию в git. это было легко. также я добавил поддержку авторов и комментарии фиксации. любые известные существующие ответственные заявления не могут обеспечить такую ​​конвертацию этим собачьим гвоздем с именами. – Andrey

+0

переименовывает «ReleaseX» в каталог «Release»: убедитесь, что вы указываете имя dir или выходите из пробела в имени dir. Например, 'Release \ X' или' "Release X" ' – kmatheny

Смежные вопросы