Как работают репо (SVN, GIT)? - PullRequest
       55

Как работают репо (SVN, GIT)?

6 голосов
/ 19 февраля 2010

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

1) Есть команда (малое, большое дело). Утром все проверяют код, чтобы начать работать. В полдень человек А совершает, а человек Б все еще работает над этим. Что происходит, когда человек В совершает? как человек Б узнает, что есть обновленный файл?

2) Я предполагаю, что ответ на первый вопрос «запустить команду обновления, которая сообщает вам», хорошо, так что человек Б узнает, что файл, с которым они работали все утро, изменился. Когда они видят обновленный файл, кажется, что человек А перезаписал файл для повышения производительности. Что делает человек Б? Кажется, целый день был пустой тратой времени. Или, если они передадут свою версию, это пустая трата времени человека А?

3) Что такое филиалы?

спасибо, и если кто-нибудь знает непрофессионалы с выражениями pdf или чем-то, что объясняет это, это было бы замечательно.

Ответы [ 13 ]

0 голосов
/ 19 февраля 2010

То, что я говорю ниже, действительно для svn, потому что git или mercurial немного отличаются (я бы сказал, проще).

1) Человек B должен обновить и объединить изменения в своей собственной локальной копии до коммит -ing (он также может просто проверить если есть изменения). Если он просто попытается зафиксировать , она получит сообщение о том, что его локальная копия svn устарела.

2) Лицо B находится в некотором затруднении, так как слияние не будет легким (оно не будет автоматически управляться SVN, оно будет конфликтовать ) ... если это действительно слишком сложно, B придется думаю, что она снова меняется.

Эта проблема на самом деле не имеет решения. Некоторые системы управления версиями допускают какую-то блокировку, но это порождает другие проблемы (файл может оставаться заблокированным в течение длительного времени, и никто, кроме блокировщика, не может работать с ним в промежутке, даже если изменения легко слились). Просто внесите небольшие изменения и поговорите с другими программистами (реальным собранием, IRC, электронной почтой или любым другим способом), чтобы избежать этого.

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

0 голосов
/ 19 февраля 2010

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

0 голосов
/ 19 февраля 2010

Я бы сказал, часто совершайте. И перед каждым коммитом обновляйте.

Я бы рекомендовал прочитать этот документ, он довольно хорошо объясняет различные возможные рабочие процессы централизованных и децентрализованных (намного лучше) систем контроля версий: http://wiki.bazaar.canonical.com/Workflows

...