LINUX.ORG.RU

Как лучше коммитить в SVN?


0

0


Какая best practice в следующей ситуации:
проэкт на кучу файлов. Изменил 2-3 файла. Приступил к коммиту. Вариант А:
svn ci /path/to/proj/
Вариант Б:
svn ci file1.cpp file1.h file2.cpp file2.h file3.cfg
Вариант Ц:
svn ci file1.cpp
svn ci file1.h
...........

вроде во всяких howto's проходит вариант Ц, но с другой стороны, только при варианте А множно видеть логи всех изменений одной командой, без надобности догадываться лог какого именно файла надо смотреть, что-бы вспомнить какие изменения были сделаны между ревизией X и Y.

★★

Почему бы просто не написать svn commit в корне дерева проекта?

erDiZz
()

Еще можно так:

for ff in "$path-to-1/file1" "$path-to-2/file2" ... "$path-to-N/fileN"; do {
  ( cd $(dirname $ff) && cvs commit $(basename $ff) )
}; done

При желании можно на перле переписать, добавив
автопоиск измененных файлов в директориях проекта.

e
()

Не понимаю ваших терзаний. :) svn commit в корневом каталоге, и всё. Для того, чтобы вспомнить, какие изменения были сделаны между ревизией X и Y, достаточно в том же корневом каталоге сделать svn log -r X:Y. =)

Ну и, конечно, коммитить надо минимальными порциями. Но только так, чтоб эти порции были осмысленными и самодостаточными, и чтоб любая версия из SVN собиралась и запускалась. Ну то есть, поправил что-то, сразу закоммитил, потом ещё поправил, ещё закоммитил.

ero-sennin ★★
()
Ответ на: комментарий от ero-sennin

> коммитить надо минимальными порциями. Но только так, чтоб эти порции были осмысленными и самодостаточными, и чтоб любая версия из SVN собиралась и запускалась. Ну то есть, поправил что-то, сразу закоммитил, потом ещё поправил, ещё закоммитил.

А как можно узнать, что версия запускается, если предлагается коммитить сразу, как только исправил?

Предлагаемый вариант еще более экстемален, чем XP - там хоть тесты гоняют.

anonymous
()
Ответ на: комментарий от anonymous

> Предлагаемый вариант еще более экстемален, чем XP - там хоть тесты гоняют.

Кто тебе здесь запрещает тесты гонять? Наоборот, многие VC умеют перед коммитом прогонять тесты, если они валятся, тогда коммит обламывается.

rab_boziy
()
Ответ на: комментарий от anonymous

> А как можно узнать, что версия запускается, если предлагается коммитить сразу, как только исправил?

"Исправил" - значит, изменил код и убедился, что всё работает (ну хотя бы юнит-тесты). :)

ero-sennin ★★
()
Ответ на: комментарий от rab_boziy

> Кто тебе здесь запрещает тесты гонять?

Я просто хотел акцентировать на этом внимание ;)

anonymous
()

Вариант Ц в общем случае зло. В Subversion не просто так появилась атомарность коммитов чтоб вот так поп простому ее сводить на нет. Если фалы file1.cpp и file1.h содержат связанные обновления, то и коммитить их надо обязательно вместе.

Вообще, после работы с Darcs сильно не хватает интерактивных коммитов в command-line клиенте.

WFrag ★★★★
()

> только при варианте А множно видеть логи всех изменений одной командой, без надобности догадываться лог какого именно файла надо смотреть, что-бы вспомнить какие изменения были сделаны между ревизией X и Y.

Это ж неправда - в варианте Б связь между закоммиченными файлами сохраняется.

anonymous
()
Ответ на: комментарий от anonymous

> в варианте Б связь между закоммиченными файлами сохраняется.

Да, но сделав svn log в корне проекта, ты не увидишь этого изменения.

watashiwa_daredeska ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.