<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
	<title>Хабрахабр / Комментарии к посту «Про Git на пальцах (для переходящих с SVN)» в блоге «Разработка»</title>
	<link>http://habrahabr.ru/rss/post/68341/</link>
	<description><![CDATA[Новые комментарии к посту «Про Git на пальцах (для переходящих с SVN)» в блоге «Разработка»]]></description>
	<language>ru</language>
	<managingEditor>editor@habrahabr.ru</managingEditor>
	<generator>habrahabr.ru</generator>
	<pubDate>Sat, 11 Feb 2012 19:31:51 GMT</pubDate>
	<lastBuildDate></lastBuildDate>
	<image>
		<link>http://habrahabr.ru/</link>
		<url>http://habrahabr.ru/i/logo.gif</url>
		<title>Хабрахабр</title>
	</image>
	

	
	
	
	
	
		
	
		<item>
			<title>07.09.2009 13:42:07 el777</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/development/68341/#comment_1958519</guid>
			<link>http://habrahabr.ru/blogs/development/68341/#comment_1958519</link>
			<description><![CDATA[Опишите. Когда я искал такие решения, они были с какими-то проблемами и не подходили. <br/>
Если вам удалось это сделать удобно — то было бы очень интересно прочитать.]]></description>
			<pubDate>Mon, 07 Sep 2009 13:42:07 GMT</pubDate>
			<author>el777</author>
		</item>
	

	
		<item>
			<title>01.09.2009 11:58:51 clops</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/development/68341/#comment_1943036</guid>
			<link>http://habrahabr.ru/blogs/development/68341/#comment_1943036</link>
			<description><![CDATA[Первый и достойный ответ по делу. Поддерживаю]]></description>
			<pubDate>Tue, 01 Sep 2009 11:58:51 GMT</pubDate>
			<author>clops</author>
		</item>
	

	
		<item>
			<title>01.09.2009 09:22:07 aratak</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/development/68341/#comment_1942552</guid>
			<link>http://habrahabr.ru/blogs/development/68341/#comment_1942552</link>
			<description><![CDATA[да. очень интересно. допустим, используя redmine приходится вытягивать проект в папку на сервере по крону, (которая доступна для redmine). ]]></description>
			<pubDate>Tue, 01 Sep 2009 09:22:07 GMT</pubDate>
			<author>aratak</author>
		</item>
	

	
		<item>
			<title>01.09.2009 09:17:28 aratak</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/development/68341/#comment_1942530</guid>
			<link>http://habrahabr.ru/blogs/development/68341/#comment_1942530</link>
			<description><![CDATA[можно попробовать <a href="http://www.kernel.org/pub/software/scm/git/docs/gitmodules.html">gitmodule</a>. вроде оно.]]></description>
			<pubDate>Tue, 01 Sep 2009 09:17:28 GMT</pubDate>
			<author>aratak</author>
		</item>
	

	
		<item>
			<title>31.08.2009 16:30:21 allter</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/development/68341/#comment_1940772</guid>
			<link>http://habrahabr.ru/blogs/development/68341/#comment_1940772</link>
			<description><![CDATA[&gt; разрабатывайте, как хотите, а мне присылайте патчи<br/>
<br/>
В общем-то, Торвальдс так и сделал, за исключением того, что у него есть доверенные замы (как он выражается, лейтенанты) по разным подсистемам, с которых он мерджит.<br/>
<br/>
Кстати, ваши люди вполне могут сами работать с master демократичным образом, но «официальная» версия master будет только у вас и вы её будете регулярно накатывать на репозиторий (push -f). Это, конечно, плохо тем, что тем разработчикам, кто ранее склонировал master с общего сервера придётся rebase-ить его на за-push-еный вами.<br/>
<br/>
В общем, если сложно настроить DAV, то выходов куча.<br/>
<br/>
Я бы всё-таки сделал иерархию ref`ов с ограничением доступа в конфиге апача, если ничего лучшего нет. Либо найдите перловика, который ограничит доступ через mod_perl. Ещё лучше, конечно поставить ssh, а для людей, сидящих под файрволом вывесить ssh на 443 порту.]]></description>
			<pubDate>Mon, 31 Aug 2009 16:30:21 GMT</pubDate>
			<author>allter</author>
		</item>
	

	
		<item>
			<title>31.08.2009 15:54:07 torkve</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/development/68341/#comment_1940682</guid>
			<link>http://habrahabr.ru/blogs/development/68341/#comment_1940682</link>
			<description><![CDATA[В gitweb я возможности подобных ограничений тоже не нашел, а гитхаб, если я ничего не путаю, сам по себе закрытый.<br/>
Другого способа доступа к файлам без привлечения ssh я, увы, не нашел :) Есть, конечно, git-daemon, но он работает только на чекауты, а не на коммиты.<br/>
Устраивать отдельные репозитории для «закрытых» и «общих» веток — это всё-таки, имхо, бардак. Проще сказать: «разрабатывайте, как хотите, а мне присылайте патчи».]]></description>
			<pubDate>Mon, 31 Aug 2009 15:54:07 GMT</pubDate>
			<author>torkve</author>
		</item>
	

	
		<item>
			<title>31.08.2009 15:29:56 allter</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/development/68341/#comment_1940625</guid>
			<link>http://habrahabr.ru/blogs/development/68341/#comment_1940625</link>
			<description><![CDATA[Вам, может, будет проще прописать не полные урлы для ограничения, а маски путей. Тогда не придётся менять конфиг каждый раз. Или посмотрите на другие DAV сервера, например на nginx`овский (я с ним не работал, но судя по примерам конфигов в гугле, он довольно тонко настраивается).<br/>
<br/>
Ещё попробуйте посмотреть, как это сделано в github/gitweb для mob веток (я не смотрел).<br/>
<br/>
В общем, это не проблема git, а проблема выбранного способа доступа к файлам.<br/>
<br/>
Лучше, конечно, сделать, как предложил maxcom ниже — это и нагляднее, и привычнее (вспомним систему интеграции, которой придерживается проект linux ядра).]]></description>
			<pubDate>Mon, 31 Aug 2009 15:29:56 GMT</pubDate>
			<author>allter</author>
		</item>
	

	
		<item>
			<title>31.08.2009 15:11:02 dienow</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/development/68341/#comment_1940584</guid>
			<link>http://habrahabr.ru/blogs/development/68341/#comment_1940584</link>
			<description><![CDATA[Это ответ на то что в SVN неудобно реализованы ветки и нельзя решить при их помощи основные задачи. Так то я представляю в чём разница :-)]]></description>
			<pubDate>Mon, 31 Aug 2009 15:11:02 GMT</pubDate>
			<author>dienow</author>
		</item>
	

	
		<item>
			<title>31.08.2009 15:10:38 allter</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/development/68341/#comment_1940580</guid>
			<link>http://habrahabr.ru/blogs/development/68341/#comment_1940580</link>
			<description><![CDATA[1) Вот-вот. Я как раз и писал (выше по треду), что определённые орг. проблемы порождают определённые сложности при работе с Subversion, которые перестают быть таковыми при использовании Git. Эти орг. проблемы, конечно, решаются, но слишком уж мелкими шажками. <br/>
<br/>
Собственно, я для основных проектов git использую в совокупности с оставшимся в наследство svn хранилищем. При этом перенос коммитов между ветками делается без потери семантики «коммит»/«изменение»/«фича» с помощью rebase. И в этом и заключается основная крутизна Git, как DVCS/DSCM: независимость своей ветки кода от чужой. И этим активно пользуются open source проекты, т.к. у них ситуация, когда «пропадает» разработчик (он же часто и заказчик) той или иной фичи, случается гораздо чаще, чем в процессе «нормальной разработки». И семь остальных фич заглохшую ждать при релизе не будут.<br/>
<br/>
Кстати, в приведённом в (1) сценарии использования основная засада — не «быстро-быстро» внедрить 0910 (любой мало-мальски грамотный руководитель такого никогда не попросит, хотя у нас и так бывает иногда), а отказаться в ближайшей версии (и в trunk) от некоторых изменений, которые уже оттестированы (и замерджены в trunk) в ближайшем накате (см. пункт 0909-&gt;trunk-&gt;0910,0908). Этот сценарий гораздо более част в жизни из-за real life забот (политика, юр. обязательства и т.п.). В Subversion этому поможет только политика «стабильный trunk», когда изменения в trunk попадают только после успешного деплоя фича-брэнча (спасибо за картинку в комменте внизу — как раз иллюстрирует этот подход). Иначе в trunk придётся делать малокрасивый коммит «обратного диффа». С которым потом (когда части заблокированных изменений, наконец, дадут зелёный свет) непонятно, что делать, т.к. всё, что при этом остаётся в trunk — это коммит с текстовым changelog (в лучшем случае) и кучей каких-то непонятных изменений: какие изменения надо накатывать из «забаненного» фича-бренча — непонятно.<br/>
<br/>
(2) <br/>
&gt; Релиз ветки, как явление, не содержат изменений вообще, только баг-фиксы.<br/>
<br/>
Т.е. у вас, на самом деле, изменения не автоматические, как на картинке, а выполняются SCM-инженером (или тимлидом) по необходимости. Тогда понятно — это единственный нормальный подход при наличии хотя бы минимального управления/vision/предсказания у проекта (и описано везде, включая svn book). Проблема, что не все проекты такие — в частности, многие задачи поддержки/эксплуатации существующих систем жёстко привязаны к реальной жизни и изменения, происходящие в ней мгновенно сказываются на проекте, не позволяя ждать следующего цикла.]]></description>
			<pubDate>Mon, 31 Aug 2009 15:10:38 GMT</pubDate>
			<author>allter</author>
		</item>
	

	
		<item>
			<title>31.08.2009 14:55:20 sse</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/development/68341/#comment_1940541</guid>
			<link>http://habrahabr.ru/blogs/development/68341/#comment_1940541</link>
			<description><![CDATA[На Хабре много чего не хватает про разработку, однако больше всего плюсов набирают посты про новинки от Apple и обзоры кусков пластмассы. А за статью на техническую тему можно и минусов набрать «туда, о чем нельзя упоминать» :)]]></description>
			<pubDate>Mon, 31 Aug 2009 14:55:20 GMT</pubDate>
			<author>sse</author>
		</item>
	

	
		<item>
			<title>31.08.2009 14:34:37 allter</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/development/68341/#comment_1940487</guid>
			<link>http://habrahabr.ru/blogs/development/68341/#comment_1940487</link>
			<description><![CDATA[Да, я читал, хороший текст. Но, тем не менее, описанный подход всё равно требует определённого разумного планирования, к примеру, в том, что бы Stories не пересекались. Вообще, может, по комменту, на который вы отвечали, не очень заметно, но в комментах <br/>
<br/>
habrahabr.ru/blogs/development/68341/#comment_1939100<br/>
habrahabr.ru/blogs/development/68341/#comment_1939795<br/>
<br/>
речь пошла о том, что вопросы плохой организации/проектирования/архитектуры осложняют работу с Subversion. Конечно, такие моменты осложнят и работу с git, но, как мне кажется, с конкретной задачей подготовки двух релизов в условиях гонки лучше справляется git, чем svn, т.к. встроенные механизмы rebase и merge сохраняют семантику «коммит» и благодаря этому людям, ответственным за каждый из релизов проще управлять изменениями, наработанными во время гонки другой командой (для другого релиза).]]></description>
			<pubDate>Mon, 31 Aug 2009 14:34:37 GMT</pubDate>
			<author>allter</author>
		</item>
	

	
		<item>
			<title>31.08.2009 14:31:38 clops</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/development/68341/#comment_1940478</guid>
			<link>http://habrahabr.ru/blogs/development/68341/#comment_1940478</link>
			<description><![CDATA[<img src="http://www.infoq.com/resource/articles/agile-version-control/en/resources/image15.gif"/>]]></description>
			<pubDate>Mon, 31 Aug 2009 14:31:38 GMT</pubDate>
			<author>clops</author>
		</item>
	

	
		<item>
			<title>31.08.2009 14:30:31 clops</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/development/68341/#comment_1940473</guid>
			<link>http://habrahabr.ru/blogs/development/68341/#comment_1940473</link>
			<description><![CDATA[отличный материал. на хабре, кстати, не хватает статей именно на тематику теоретического использования систем контроля версий]]></description>
			<pubDate>Mon, 31 Aug 2009 14:30:31 GMT</pubDate>
			<author>clops</author>
		</item>
	

	
		<item>
			<title>31.08.2009 14:28:17 clops</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/development/68341/#comment_1940465</guid>
			<link>http://habrahabr.ru/blogs/development/68341/#comment_1940465</link>
			<description><![CDATA[1) Ситуация исключена на организационном уровне. Клиентов готовят к тому, что их проект будет частью определённого релиза.<br/>
<br/>
2) Релиз ветки, как явление, не содержат изменений вообще, только баг-фиксы. Все изменения в отдельных ветках, которые попадаю в trunk. Из него раз в месяц ответвляется новый релиз. Баг фиксы, соответственно, делаются только в релиз ветках (один раз) и пропагируют оттуда в trunk и другие ветки. Этим занимаются branch managers. <br/>
<br/>
Вообще это стандартная практика. Release Driven Development.]]></description>
			<pubDate>Mon, 31 Aug 2009 14:28:17 GMT</pubDate>
			<author>clops</author>
		</item>
	

	
		<item>
			<title>31.08.2009 14:24:38 allter</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/development/68341/#comment_1940448</guid>
			<link>http://habrahabr.ru/blogs/development/68341/#comment_1940448</link>
			<description><![CDATA[1) А если высшее руководство попросит часть изменений, запланированных в ветке 0910, срочно сделать и включить на выходных, а изменения 0909 притормозить до неизвестных времён, то что вы будете делать?<br/>
<br/>
2) <br/>
&gt; выглядит это просто: утром запускается автоматические merges<br/>
<br/>
&gt; 0910-&gt;trunk-&gt;0909,0908<br/>
&gt; 0909-&gt;trunk-&gt;0910,0908<br/>
<br/>
Т.е. 0908 содержит все изменения из свежих веток? А в чём тогда разница между ними? Или merge не автоматические, а, таки, выборочные?<br/>
<br/>
]]></description>
			<pubDate>Mon, 31 Aug 2009 14:24:38 GMT</pubDate>
			<author>allter</author>
		</item>
	

	
		<item>
			<title>31.08.2009 14:12:45 SergeyKish</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/development/68341/#comment_1940412</guid>
			<link>http://habrahabr.ru/blogs/development/68341/#comment_1940412</link>
			<description><![CDATA[Ага, с точки зрения svn пользователя другие СКВ отличаются только распределенностью… до смены СКВ.]]></description>
			<pubDate>Mon, 31 Aug 2009 14:12:45 GMT</pubDate>
			<author>SergeyKish</author>
		</item>
	

	
		<item>
			<title>31.08.2009 13:53:45 sse</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/development/68341/#comment_1940343</guid>
			<link>http://habrahabr.ru/blogs/development/68341/#comment_1940343</link>
			<description><![CDATA[Если у вас есть трудности с svn, возможно, имеет смысл посмотреть сюда — не исключено, что будет полезно (если вы еще не видели, конечно): <a href="http://www.infoq.com/articles/agile-version-control">www.infoq.com/articles/agile-version-control</a>]]></description>
			<pubDate>Mon, 31 Aug 2009 13:53:45 GMT</pubDate>
			<author>sse</author>
		</item>
	

	
		<item>
			<title>31.08.2009 13:50:41 sse</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/development/68341/#comment_1940320</guid>
			<link>http://habrahabr.ru/blogs/development/68341/#comment_1940320</link>
			<description><![CDATA[TFS лучше забыть как страшный сон — это не scm, это фреймворк для построения scm. Помимо того, что он криво встраивается в 2003/2005 студию, у него огромные проблемы с workspace. Проверено на более-менее крупных проектах — плюемся, доделываем и будем искать альтернативы.]]></description>
			<pubDate>Mon, 31 Aug 2009 13:50:41 GMT</pubDate>
			<author>sse</author>
		</item>
	

	
		<item>
			<title>31.08.2009 13:48:37 sse</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/development/68341/#comment_1940309</guid>
			<link>http://habrahabr.ru/blogs/development/68341/#comment_1940309</link>
			<description><![CDATA[Не знаю, что значит лучше: Visual SVN прекрасно работает через http «искаропки» (фактически это — апач с svn-модулем).]]></description>
			<pubDate>Mon, 31 Aug 2009 13:48:37 GMT</pubDate>
			<author>sse</author>
		</item>
	

	
		<item>
			<title>31.08.2009 13:45:02 clops</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/development/68341/#comment_1940292</guid>
			<link>http://habrahabr.ru/blogs/development/68341/#comment_1940292</link>
			<description><![CDATA[не согласен — у нас в SVN репозитории сейчас 3 активных релиз бранча<br/>
<br/>
0908 — это на продакшн сервере<br/>
0909 — в выходные будет go-live<br/>
0910 — это на следующий месяц, был ответвлён из trunk в эти выходные<br/>
<br/>
по одному на каждый месяц. release maitainer каждое утро сливает все change setы — конфликтов за несколько лет работы практически не было.<br/>
<br/>
выглядит это просто: утром запускается автоматические merges<br/>
<br/>
0910-&gt;trunk-&gt;0909,0908<br/>
0909-&gt;trunk-&gt;0910,0908<br/>
0908-&gt;trunk-&gt;0909,0910<br/>
<br/>
притом из-за специфика SVN мы переносим все changesets как одну ревизию кода. все разработки ведутся не в trunk а в отдельных ветках, которые потом вливаниются в trunk перед тем как создаётся новая релиз ветка.<br/>
]]></description>
			<pubDate>Mon, 31 Aug 2009 13:45:02 GMT</pubDate>
			<author>clops</author>
		</item>
	

	
		<item>
			<title>31.08.2009 13:37:38 allter</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/development/68341/#comment_1940257</guid>
			<link>http://habrahabr.ru/blogs/development/68341/#comment_1940257</link>
			<description><![CDATA[Я больше не о терминологии (в некотором смысле, trunk — это «следующий/планируемый/текущий/нестабильный релиз»). А о том, что на Subversion в силу того, что встроенный механизм слияния имеет серьёзные ограничения и того, что замердживаемые изменения сами могут быть замерджены (причём, возможно, пофайлово, а не целым деревом), сложнее вести два релиз-бренча одновременно.<br/>
<br/>
Приходится либо реализовывать идентичные изменения независимо (что потом приведёт к конфликтам), либо мерджить изменения поштучно (что приведёт к большой ручной работе, если засбоит новый механизм автомерджа в Subversion).]]></description>
			<pubDate>Mon, 31 Aug 2009 13:37:38 GMT</pubDate>
			<author>allter</author>
		</item>
	

	
		<item>
			<title>31.08.2009 13:37:10 maxcom</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/development/68341/#comment_1940252</guid>
			<link>http://habrahabr.ru/blogs/development/68341/#comment_1940252</link>
			<description><![CDATA[дать всем ssh доступ к репозиторию — это проще всего]]></description>
			<pubDate>Mon, 31 Aug 2009 13:37:10 GMT</pubDate>
			<author>maxcom</author>
		</item>
	

	
		<item>
			<title>31.08.2009 13:35:35 maxcom</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/development/68341/#comment_1940245</guid>
			<link>http://habrahabr.ru/blogs/development/68341/#comment_1940245</link>
			<description><![CDATA[git не поддерживает такие ограничения. Можно хранить master в отдельном репозитарии, в который писать может только head developer, а остальные разработчики — только читать. Соответственно остальным выдать репозиторой «песочницу», в которой они будут жить, и из которой будет вытягивать нужные изменения head developer.]]></description>
			<pubDate>Mon, 31 Aug 2009 13:35:35 GMT</pubDate>
			<author>maxcom</author>
		</item>
	

	
		<item>
			<title>31.08.2009 13:27:54 torkve</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/development/68341/#comment_1940209</guid>
			<link>http://habrahabr.ru/blogs/development/68341/#comment_1940209</link>
			<description><![CDATA[Вот я искал что-то и решений не нашёл…]]></description>
			<pubDate>Mon, 31 Aug 2009 13:27:54 GMT</pubDate>
			<author>torkve</author>
		</item>
	

	
		<item>
			<title>31.08.2009 13:23:20 allter</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/development/68341/#comment_1940187</guid>
			<link>http://habrahabr.ru/blogs/development/68341/#comment_1940187</link>
			<description><![CDATA[Можно также прикрутить к апачу модуль (например, mod_perl) и навесить обработчик на стадию аутентификации и авторизации (по такому же пути можно осуществить авторизацию через LDAP). Наверняка это уже где-то есть в гугле — к сожалению именно сопряжением webdav с гитом я не занимался, что бы более адресно помочь.]]></description>
			<pubDate>Mon, 31 Aug 2009 13:23:20 GMT</pubDate>
			<author>allter</author>
		</item>
	

	
		<item>
			<title>31.08.2009 12:55:22 torkve</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/development/68341/#comment_1940072</guid>
			<link>http://habrahabr.ru/blogs/development/68341/#comment_1940072</link>
			<description><![CDATA[Ну, у меня работа с DAV идёт средствами апачевского mod_dav, приблизительно так:<br/>
<blockquote><code>&lt;Directory &quot;/home/git/myrepo.git/&quot;&gt;<br/>
Dav on<br/>
Order Allow,Deny<br/>
Allow from all<br/>
AuthType Basic<br/>
AuthName Git<br/>
AuthUserFile &quot;/path/to/dav_git.passwd&quot;<br/>
&lt;LimitExcept GET PROPFIND OPTIONS REPORT&gt;<br/>
Require valid-user<br/>
&lt;/LimitExcept&gt;<br/>
&lt;/Directory&gt;<br/>
</code></blockquote><br/>
То есть, DAV позволяет разрешить чекауты всем, но любая операция коммита требует авторизации из файла паролей. Насколько я вижу в access-логе апача, для ограничения коммита мне придётся на &quot;/myrepo.git/refs/heads/master&quot; поставить ограничение на LOCK отдельным файлом паролей. Это довольно неудобно и требует перечитывания конфига апача при каждом добавлении/изменении веток с ограничениями.<br/>
В dav_svn я могу в authz-файле указать права просто как:<br/>
<blockquote>[myrepo:/trunk]<br/>
headdev=rw<br/>
seconddev=rw<br/>
*=r<br/>
<br/>
[myrepo:/branches/mybranch]<br/>
headdev=rw<br/>
someoneelse=rw<br/>
*=r</blockquote><br/>
И изменять права доступа к любым веткам, не касаясь апача.<br/>
А у гита получается непосредственная работа с апачевским конфигом, плюс дублирование записей о паролях для каждого отдельного проекта/каталога, к которому разработчик имеет доступ.<br/>
Если второе еще можно пережить, то первое как-то очень неудобно.]]></description>
			<pubDate>Mon, 31 Aug 2009 12:55:22 GMT</pubDate>
			<author>torkve</author>
		</item>
	

	
		<item>
			<title>31.08.2009 12:44:47 clops</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/development/68341/#comment_1940041</guid>
			<link>http://habrahabr.ru/blogs/development/68341/#comment_1940041</link>
			<description><![CDATA[столбы приравниваются к релизам. релиз — это отдельная ветка от транка и он довольно долго обкатывается прежде чем попасть в продакшн]]></description>
			<pubDate>Mon, 31 Aug 2009 12:44:47 GMT</pubDate>
			<author>clops</author>
		</item>
	

	
		<item>
			<title>31.08.2009 12:42:04 clops</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/development/68341/#comment_1940032</guid>
			<link>http://habrahabr.ru/blogs/development/68341/#comment_1940032</link>
			<description><![CDATA[у нас trunk — это даже не продакшн, а просто основа кода. из него раз в месяц отделяем release branch который в течении месяца тестируется со всем сторон и потом она же попадает в продакшн; все новые разработки делаются в отдельных ветках, которые по завершению попадают в транк; таким образом минимальный срок тестирования любой новой фишки составляет 4 недели. стандартная release driven парадигма]]></description>
			<pubDate>Mon, 31 Aug 2009 12:42:04 GMT</pubDate>
			<author>clops</author>
		</item>
	

	
		<item>
			<title>31.08.2009 12:38:59 clops</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/development/68341/#comment_1940026</guid>
			<link>http://habrahabr.ru/blogs/development/68341/#comment_1940026</link>
			<description><![CDATA[&gt; Надо отметить, что в SVN, конечно, есть ветки, но сделаны они, видимо, для другого, и поэтому плохо приспособлены для того, чтобы их сливать в trunk.<br/>
<br/>
это вы какую-то фигню написали. вся суть репозитория — в ветках. всем разработчикам сидеть в транке — дурдом. к правилам создания веток хочу так же добавить ветки релизов, как без этого работать мне сложно понять. SVN прекрасно работает с ветками во всех направлениях, дайте мне кейс, кто она с ними не справляется как должно.<br/>
<br/>
в пользу GIT говорит только распределённость.]]></description>
			<pubDate>Mon, 31 Aug 2009 12:38:59 GMT</pubDate>
			<author>clops</author>
		</item>
	

	
		<item>
			<title>31.08.2009 12:31:08 skiedr</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/development/68341/#comment_1940010</guid>
			<link>http://habrahabr.ru/blogs/development/68341/#comment_1940010</link>
			<description><![CDATA[Если у вас линукс почитайте эту <a href="http://blog.drewolson.org/2008/05/remote-git-repos-on-ubuntu-right-way.html">статью</a>.<br/>
Ести немножко донатроить SSH можно удет иметь github подобную авторизацию с помощью ключей доступа.]]></description>
			<pubDate>Mon, 31 Aug 2009 12:31:08 GMT</pubDate>
			<author>skiedr</author>
		</item>
	

	
		<item>
			<title>31.08.2009 12:24:23 SMiX</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/development/68341/#comment_1939995</guid>
			<link>http://habrahabr.ru/blogs/development/68341/#comment_1939995</link>
			<description><![CDATA[`hg serve` это как раз http-сервер, а другого вроде каки нет.]]></description>
			<pubDate>Mon, 31 Aug 2009 12:24:23 GMT</pubDate>
			<author>SMiX</author>
		</item>
	

	
		<item>
			<title>31.08.2009 12:22:46 torkve</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/development/68341/#comment_1939991</guid>
			<link>http://habrahabr.ru/blogs/development/68341/#comment_1939991</link>
			<description><![CDATA[Каким образом? Я вот, наоборот, всё бьюсь, и никак не могу настроить гит для нормлаьной работы через http.]]></description>
			<pubDate>Mon, 31 Aug 2009 12:22:46 GMT</pubDate>
			<author>torkve</author>
		</item>
	

	
		<item>
			<title>31.08.2009 11:39:11 SergeyKish</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/development/68341/#comment_1939871</guid>
			<link>http://habrahabr.ru/blogs/development/68341/#comment_1939871</link>
			<description><![CDATA[Git разделяет изменение индекса и коммит.<br/>
Значение файлов сохраняется при добавлении в индекс, соответственно есть три варианта git diff.<br/>
<br/>
$ echo 'created' &gt;file<br/>
$ git add file<br/>
$ echo 'updated' &gt;file<br/>
$ git diff file # относительно индекса<br/>
@@ -1 +1 @@<br/>
-created<br/>
+updated<br/>
$ git diff --cached # в индексе<br/>
@@ -0,0 +1 @@<br/>
+created<br/>
$ git diff HEAD # от последнего коммита<br/>
diff --git a/file b/file<br/>
@@ -0,0 +1 @@<br/>
+updated<br/>
<br/>
При коммите сохраняется текущий индекс. Команда git commit -a эквивалентна<br/>
<br/>
git add -u # добавляем в индекс измененные файлы<br/>
git commit<br/>
]]></description>
			<pubDate>Mon, 31 Aug 2009 11:39:11 GMT</pubDate>
			<author>SergeyKish</author>
		</item>
	

	
		<item>
			<title>31.08.2009 11:29:45 allter</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/development/68341/#comment_1939846</guid>
			<link>http://habrahabr.ru/blogs/development/68341/#comment_1939846</link>
			<description><![CDATA[Можно закрыть определённые файлы ref`ов (т.е., по сути, ветки) средствами DAV сервера.]]></description>
			<pubDate>Mon, 31 Aug 2009 11:29:45 GMT</pubDate>
			<author>allter</author>
		</item>
	

	
		<item>
			<title>31.08.2009 11:12:21 allter</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/development/68341/#comment_1939795</guid>
			<link>http://habrahabr.ru/blogs/development/68341/#comment_1939795</link>
			<description><![CDATA[К сожалению, иногда увольнять надо и горе-менеджеров: часто задача достижения определённого «километрового столба» ставится приоритетной, в trunk происходит активная интеграция, а потом вдруг всё глохнет, а актуальной задачей становится, например, релиз с новой, необходимой бизнесу, функциональностью.<br/>
<br/>
С Subversion`овским мерджем в таком сценарии использования остаётся только курить бамбук и реализовывать в новой интеграционной ветке, в том числе, часть функциональности, которая уже замерджена в заглохший trunk. Даже после версии 1.5, чей мердж иногда сглюкивает (в частности, на репозиториях, которые родились до 1.5 или на которых активно поколдовали с помощью svk) и приходится откатываться на покоммитный мердж. :(<br/>
<br/>
А когда заказчик trunk-а оживёт, придётся синхронить изменения, сделанные в релизной ветке с trunk.<br/>
]]></description>
			<pubDate>Mon, 31 Aug 2009 11:12:21 GMT</pubDate>
			<author>allter</author>
		</item>
	

	
		<item>
			<title>31.08.2009 11:07:43 SergeyKish</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/development/68341/#comment_1939782</guid>
			<link>http://habrahabr.ru/blogs/development/68341/#comment_1939782</link>
			<description><![CDATA[Попробуйте заменить слово «svn» на hg, bzr, git.<br/>
<br/>
Статья отражает функционал git для пользователей svn. Не стоит по ней судить о возможностях git.<br/>
Git выбирают за то чего в svn нет.]]></description>
			<pubDate>Mon, 31 Aug 2009 11:07:43 GMT</pubDate>
			<author>SergeyKish</author>
		</item>
	

	
		<item>
			<title>31.08.2009 11:06:36 TedBeer</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/development/68341/#comment_1939779</guid>
			<link>http://habrahabr.ru/blogs/development/68341/#comment_1939779</link>
			<description><![CDATA[собственно в этом заключается вопрос — как сделать репозитарий общим]]></description>
			<pubDate>Mon, 31 Aug 2009 11:06:36 GMT</pubDate>
			<author>TedBeer</author>
		</item>
	

	
		<item>
			<title>31.08.2009 11:05:30 ayc</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/development/68341/#comment_1939774</guid>
			<link>http://habrahabr.ru/blogs/development/68341/#comment_1939774</link>
			<description><![CDATA[Да во всех scm есть собственные встроенные серверы с собственным протоколом. Но я как раз о случае, когда их использовать нельзя или невозможно. А HTTP всегда доступен, и с ним работа у Git'а самая удобная, imho.]]></description>
			<pubDate>Mon, 31 Aug 2009 11:05:30 GMT</pubDate>
			<author>ayc</author>
		</item>
	

	
		<item>
			<title>31.08.2009 10:58:21 allter</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/development/68341/#comment_1939758</guid>
			<link>http://habrahabr.ru/blogs/development/68341/#comment_1939758</link>
			<description><![CDATA[Или, что у меня гораздо чаще случается, чем описанное оратором выше: часто начинаешь делать изменения, а потом замечаешь, что коммиттить их в будущем надо будет не в эту, а в другую ветку. Для этого делаешь git add, потом, вроде git reset --soft (я пользуюсь GUI-интерфейсом gitk для этого, не знаю точных ключей) и дальше продолжаешь модифицировать изменения, после чего комиттишь.<br/>
<br/>
Кстати, пользуясь svn я часто тоже делаю аналог git add: есть специальный скриптик, который запускается командой «sv» перед коммитом для того, что бы отследить изменения в текущем каталоге, которые будут закоммитчены.]]></description>
			<pubDate>Mon, 31 Aug 2009 10:58:21 GMT</pubDate>
			<author>allter</author>
		</item>
	

	
		<item>
			<title>31.08.2009 10:51:41 develop7</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/development/68341/#comment_1939731</guid>
			<link>http://habrahabr.ru/blogs/development/68341/#comment_1939731</link>
			<description><![CDATA[Вот выложили бы этот мануал бы да на полгода раньше — глядишь, и не наступил бы на половину граблей, как бывший пользователь svn.]]></description>
			<pubDate>Mon, 31 Aug 2009 10:51:41 GMT</pubDate>
			<author>develop7</author>
		</item>
	

	
</channel>
</rss>

