Используя Git или Mercurial, как вы узнаете, когда вы делаете клон или вытягивание, никто не проверяет файлы (нажимая на них)? - PullRequest
6 голосов
/ 05 июня 2010

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

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

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

Ответы [ 3 ]

16 голосов
/ 05 июня 2010

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

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

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

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

2 голосов
/ 07 июня 2010

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

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

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

https://www.mercurial -scm.org / вики / Hook

1 голос
/ 05 июня 2010

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

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

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

...