Используя Мерзавца или Подвижный, как Вы знали бы, когда Вы делаете клон или получение по запросу, никто не регистрируется в файлах (продвигающий его)? Может быть важно что:
1) Вы никогда не знаете, что это находится в непоследовательном состоянии, таким образом, Вы пробуете в течение 2 часов, пытаясь отладить код, когда Ваш код находится в непоследовательном состоянии.
2) Со всем кодом платформы (таким как Ruby on Rails) - потенциально сотни файлов - если некоторые файлы несовместимы с другим, не могут rake db:migrate
или script/generate controller
нанести некоторый ущерб или несоответствия к кодовой базе?
В Git и Mercurial операции извлечения и извлечения являются атомарными. Это означает, что они никогда не позволят вам получить частично продвинутые ревизии. Вы всегда получите полный набор изменений.
Обновление: я просто подумал, что вы можете бояться: «Что, если кто-то продвигает серию изменений, и я получу некоторые из них». Тогда все дело в общении и рабочем процессе, принятом в проекте.
Часто соглашаются, что каждый коммит в транк (мастер или как вы его называете) должен оставлять код в согласованном состоянии. Если кто-то знает, что он внесет изменения, которые создадут временные несоответствия, он должен сделать это в ветке и, если она готова, объединить их с основной веткой. Затем ствол переводится в состояние ветки за одну фиксацию, поэтому вы всегда будете видеть его согласованным.
Обновление 2: Как сказал Тонфа в комментарии - в Mercurial push атомарен.Я провел простой тест в git, и здесь пуши тоже атомарны. Так что вам не нужно бояться таких несоответствий, если вы знаете, что другие разработчики выдвигают рабочие наборы изменений. (хотя более ранние утверждения о ветвях остаются в силе).
Когда я делаю pull
в hg , если нет изменений, я получаю:
pulling from <REPOSITORY NAME>
searching for changes
no changes found
Итак, я знаю, что не было не было никаких изменений с момента последнего вытаскивания. Кроме того, вы всегда можете просмотреть историю репозитория и увидеть, какие изменения были внесены.
Как уже говорили другие, коммиты являются атомарными, поэтому у вас не будет проблем с несогласованностью из-за частичной фиксации.
Этот ответ добавляет к разговору то, что у вас есть возможность добавить перехватчики предварительной фиксации, которые принудительно запускают набор тестов до того, как фиксация будет разрешена.