Используя Мерзавца или Подвижный, как Вы знали бы, когда Вы делаете клон или получение по запросу, никто не регистрируется в файлах (продвигающий его)?

Используя Мерзавца или Подвижный, как Вы знали бы, когда Вы делаете клон или получение по запросу, никто не регистрируется в файлах (продвигающий его)? Может быть важно что:

1) Вы никогда не знаете, что это находится в непоследовательном состоянии, таким образом, Вы пробуете в течение 2 часов, пытаясь отладить код, когда Ваш код находится в непоследовательном состоянии.

2) Со всем кодом платформы (таким как Ruby on Rails) - потенциально сотни файлов - если некоторые файлы несовместимы с другим, не могут rake db:migrate или script/generate controller нанести некоторый ущерб или несоответствия к кодовой базе?

6
задан Jonas 16 August 2010 в 20:20
поделиться

3 ответа

В Git и Mercurial операции извлечения и извлечения являются атомарными. Это означает, что они никогда не позволят вам получить частично продвинутые ревизии. Вы всегда получите полный набор изменений.

Обновление: я просто подумал, что вы можете бояться: «Что, если кто-то продвигает серию изменений, и я получу некоторые из них». Тогда все дело в общении и рабочем процессе, принятом в проекте.

Часто соглашаются, что каждый коммит в транк (мастер или как вы его называете) должен оставлять код в согласованном состоянии. Если кто-то знает, что он внесет изменения, которые создадут временные несоответствия, он должен сделать это в ветке и, если она готова, объединить их с основной веткой. Затем ствол переводится в состояние ветки за одну фиксацию, поэтому вы всегда будете видеть его согласованным.

Обновление 2: Как сказал Тонфа в комментарии - в Mercurial push атомарен.Я провел простой тест в git, и здесь пуши тоже атомарны. Так что вам не нужно бояться таких несоответствий, если вы знаете, что другие разработчики выдвигают рабочие наборы изменений. (хотя более ранние утверждения о ветвях остаются в силе).

16
ответ дан 8 December 2019 в 12:18
поделиться

Когда я делаю pull в hg , если нет изменений, я получаю:

pulling from <REPOSITORY NAME>
searching for changes
no changes found

Итак, я знаю, что не было не было никаких изменений с момента последнего вытаскивания. Кроме того, вы всегда можете просмотреть историю репозитория и увидеть, какие изменения были внесены.

1
ответ дан 8 December 2019 в 12:18
поделиться

Как уже говорили другие, коммиты являются атомарными, поэтому у вас не будет проблем с несогласованностью из-за частичной фиксации.

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

http://git-scm.com/docs/githooks

https://www.mercurial-scm.org/wiki/Hook

2
ответ дан 8 December 2019 в 12:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: