Re[3]: Подход git
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 16.12.11 14:46
Оценка:
Здравствуйте, elw00d, Вы писали:

E>Что-то я совсем теперь запутался. Насчет SVN и git мне кажется, что все верно — хоть вы и написали, что SVN работает не как CVS. Вы имели в виду то, что коммит атомарен в svn как и в git ?


Дело не только в этом. В SVN и git вообще нет хранения именно файлов. Это хорошо можно понять на следующем примере: в CVS в принципе нельзя сделать, чтобы один и тот же путь был и файлом, и каталогом, в разных ветках, или в разные времена жизни одной ветки.

E> Но git идет дальше и в его истории мы видим дерево коммитов (ациклический граф, точнее), а в svn — только прямую историю. И ветки svn всегда идут "параллельно" (потому что merge на самом деле не merge, а получение диффа и потом его применение на текущей ветке). Поэтому Линус говорит о том, что "контент" проекта виден в git целиком, а в svn мы видим только историю текущей ветки с непонятными вкраплениями патчей из других веток.


Мне в общем-то нет дела до того, что говорит именно Линус — потому что то, что он говорит, надо делить на 2. То, что видно в git, действительно показывает историю развития более сложно, чем один прямолинейный путь. Но это к истории собственно файла с перемещением его содержимого имеет мало отношения — Вы тут уже начинаете смешивать совершенно разные вещи в один флакон. Давайте их всё-таки разделять.

В SVN мы видим текущую ветку (точнее, текущую историю в пределах репо — из-за специфического подхода SVN там ветки представляются как каталоги в общем репо). Но никто не мешает — по крайней мере в пределах одного репо — обозначать слияния так, чтобы их можно было проследить; этим просто никто не занимался систематизированно, AFAIK. Поэтому, видя commit message, что было слияние, дальше его историю можно следить только вручную. И только в одном репо. Для некоторых это принципиальное ограничение, но это именно различие CVCS vs. DCVS. Для Linux централизованная система не годилась (по крайней мере по мнению ведущих), поэтому они не стали использовать ни CVS, ни SVN.

E> Поправьте, если я неправильно понимаю.


Просто не смешивайте разные вещи. VCS (SCM, как кому нравится называть) — очень многоаспектные продукты, и надо чётко различать, о чём именно идёт речь в каком случае.
The God is real, unless declared integer.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.