ветки в svn довольно унылы, потому что по сути являются просто каталогами по соседству. merge tracking в svn 1.5 кое-как исправляет ситуацию, но все равно с mercurial (могу говорить только за него, git не пробовал) не сравнить.
Перед занесением в лог надо ещё разрулить конфликты (которых в большом проекте может быть на пару дней), посидеть в интернете, выпить кофе, поддержать пользователей, проинтервьюировать очередного кандидата — тут, глядишь, и заново merge делать пора.
Каждый раз в каждом топике про SVN найдётся какой нить умник и скажет что SVN дерьмо, а GIT это супер пупер. Вас что заставляют читать эти топики и писать унылые коменты?
Отнюдь, вы думаете если каждый человек будет так просто отписывать разные мелкие коменты из трёх строк желающих прибавиться? Сомневаюсь, надо доносить своё мнение более аргументированно.
В Mercurial одного не хватает — хорошего GUI под Windows. Имхо, популярность SVN связана не в последнюю очередь именно с TortoiseSVN.
TortoiseHg пока, увы, весьма неудобен и неповоротлив.
ну не TortoiseHg единым… хотя и он, версии 0.5, очень даже ничего. меркуриал удобно использовать и из комстроки. hg commit, hg status, hg add и т.д. — not a rocket science, как говорится. также меркуриал отлично поддерживается в NetBeans, и неплохо — в KomodoIDE.
TortoiseHg показывает полный diff в логе, а если коммит очень большой — он практически подвисает… По удобству не сравнить с TortoiseMerge и TortoiseBlame (хотя ничто не мешает использовать их — может быть, это сделают в дальнейшем). Похоже, одной из проблем стало отсутствие C-библиотеки для работы с Mercurial.
Ну да, из комстроки можно, но привыкнув к TortoiseSVN, visual diff и прочим удобствам, переходить на командную строку не очень хочется.
Дело в том что я пользовался этой штукой года 4 назад. Геморой в памяти остался до сих пор. Как таковую командную разработку с этой системой вести нереально. Принцип общего владения кодом соблюдать невозможно. Но я не исключаю что за 4 года что-то сильно поменялось, так что если хотите доказать приемущества — ждем статью.
Ну тогда понятно. А мы с VS с 2000-го года и никаких неудобств при использовании SourceSafe не замечал, наоборот — уже в 2000м году мне в нём было удобно и понятно, всё интегрировано в среду разработки.
Не знаю за что я схлопотал минусов, видимо тоже от линуксоидов которые не пробовали.
Может наоборот от тех кто пробовал? ;)
Дело то в том что у двух систем разная философия, и главное отличие в том что в VSS необходимо блокировать файлы над которыми ты сейчас работаешь. Это означает что никто другой их править не сможет. Это порождает множетсво неудобст, начиная от невозможности делать одну и ту-же задачу в команде, и заканчивая неудобствами связанными с необходимостью переговоров при внесении изменений в файл который держит другой человек. Он должен понять что ты собрался сделать, отпустить файл, подождать пока ты внесешь изменинея и отпустишь файл в свою очередь, потом опять залочить.
В SVN же ничего блокировать не надо, и можно не заботиться об этом. Каждый может менять любые файлы которые заблагорассудится. При этом это безопасно.
Удивительно, да, но с учетом того что я работаю в idea, в котором есть замечательный плагин для работы с svn, GUI и все дела, пользуюсь я исключительно командной строкой. Скажете я извращенец, но я так привык. А файлов в проекте не многим меньше.
Притом что в случае с SVN количество файлов вообще неважно. Это в VSS надо бегать по каталогам и файлы лочить/разлочивать по одному. В SVN очень редко необходимо комитить 1 файл. Обычно ниже корня спускаться не приходится.
Так что в случае если у вас в проекте 3000 файлов, вам тем более пора отказаться от VSS.
Не всё ли равно, сколько файлов в проекте? Commit, Update, Check for modifications делаются для корневого каталога и всё.
Да, поддержка SCM на уровне студии приятная штука конечно, но практика показывает, что это не более, чем приятная штука, и не может быть решающим критерием при выборе системы.
VisualSVN — плагин к Visual Studio, полностью интегрирует TortoiseSVN в оболочку Visual Studio. Но при этом есть возможность выполнять все действия и из проводника/командной строки.
А о слабости SourceSafe как системы управления версиями говорит хотя бы отсутствие транзакционного коммита.
Если вы переодически мёржитесь с транка, то для реинтеграции ветки в транк нельзя копировать изменения в своей ветке, т. к. они включают в себя мёржи с транка. Вместо этого нужно наложить на транк разницу между транком и веткой, как советуют в документации.
Было бы неплохо если бы каждый кто тут продвигает свою систему расказал бы о ней. А так, языком трепать конечно легко. Докажите статьей чем ваша система лучше SVN. Между прочим очень хотел бы послушать про VSS. Юзал её 4 года назад, после неё SVN это сказка. Но вдруг за это время многое изменилось. Хотя у VSS совсем другая концепция изначально худшая и устаревшая. Но вдруг…
Чем запоминать ревизии, или смотреть по логам, имхо гораздо проще делать 2 копии:
svn cp trunk branch--base
svn cp branch--base branch
svn co branch
работаем в бранче
легко посмотреть внесенные самим изминения
svn diff branch{--base,}
если сливаться с транком:
svn co trunk trunk--to--merge
svn merge branch{--base,} trunk--to--merge // лучше посмотреть насколько удачно слилось
svn ci
если хотим изминения из транка, то создадим еще пару бранчей и перенесем изминения из текущего
svn cp trunk branch2--base
svn cp branch2--base branch2
svn co branch2
svn merge branch{--base,} branch2
работаем дальше в branch2
ненужные бранчи предпочитаю сносить в архив, но можно и удалять
Для меня не проще, к тому же описанное очень просто скриптуется. Собственно, все вышеописанное и завернуто в несколькострочные баш скрипты.
А вот смотреть каждый раз ревизию от которой отпочкавался, имхо сильно не удобно.
А в комменты лучше писать о том что меняется в коде.
Было бы неплохо если бы каждый кто тут продвигает свою систему расказал бы о ней. А так, языком трепать конечно легко. Докажите статьей чем ваша система лучше SVN. Между прочим очень хотел бы послушать про VSS. Юзал её 4 года назад, после неё SVN это сказка. Но вдруг за это время многое изменилось. Хотя у VSS совсем другая концепция изначально худшая и устаревшая. Но вдруг…
Вчера попытался «смержить» в ветку изменения из основного дерева, не получилось — выдал ошибку «Malformed URL for repository». Всё проклял. Решил, что руки растут не из того места.
Суббота началась с чтения SVN Book (http://svnbook.red-bean.com/nightly/ru/svn.branchmerge.whatis.html), благо русская версия там есть (не то, чтобы я английский не знал, но решил, что что-то не понимаю).
Спустя пару часов понял, что ещё вчера верно уловил суть. Задумался о версии Tortoise SVN (у меня она 1.5.0), обновил до 1.5.5 — всё заработало. :)
Самое интересное что у меня на работе, клиент (обычный из командной строки, так привык) 1.5.1 но сервер версии 1.4 и они прекрасно работают вместе, только новые фичи не поддерживаются.
Как это сделать с помощью TortoiseSVN не знаю, не пользуюсь им года два. Из командной строки проверить можно просто выполнив svn merge svn://rvk1.firstvds.ru/trunk --dry-run и посмотреть какие ревизии svn будет копировать
А проще всего узнать версию сервера, например у админа ;) Если 1.5.х то поддерживает
Для интеграции со студией можно попробовать вот это ankhsvn.open.collab.net/, чтобы все работало нормально на машине должен стоять TortoiseSVN. Сервер под винды visualsvn.com/. У меня это нормально работает вместе.
Работа с ветками SVN