четверг, сентября 23, 2010
пятница, сентября 10, 2010
Mercurial, git, svn и прочая хрень
Наткнулся на сообщение Джоела Спольски:
Ну что же - начнем.
Mercurial - кроссплатформенная система управления версиями. Написана на Python со "вставками" С. Стоит заметить, что сами разработчики питона с недавних пор начали юзать меркуриал - опять таки еще одит плюс.
Mercurial, в отличии от SVN, является распределенной системной. Более подробно о распределенности можно почитать здесь. Вкратце разницу межну централизованными и распределенными системами можно показать на схемах
С данных схем можно понять, что фактически у кждого, кто работает с репозиторием меркуриала, на локалке есть своя копия репозитория - и комиты делаются именно в него. Если же нужно залить изменения на сервер - делается объединение веток репозиториев на сервере и на локальной машине. Такая архитектура более отказоустойчива и позволяет обмениваться изменениями даже при отсутствии связи с сервером.
Операции с Mercurial как и в SVN выполняются через консоль и опять таки как и в SVN у Mercurial есть свой юзер-интерфейсед клиент Mercurial tortoiseHg. К расмотрению клиента перейдем немного по позже, сейчас же остановимся на основных командах. Полный лист команд можно найти на оф. сайте http://www.selenic.com/mercurial/hg.1.html.
Вся работа с системой котроля версий Mercurial происходит с помощью команды hg.
Для начала создадим репозиторий. Для этого служит комманда Init
Вот ее описание:
>hg init meRepos
В текущем каталоге будет создан репозиторий с папкой .hg - здесь то в и хранится вся история измениений (не напоминает SVN? -:) )
Мы создали главный репозиторий. В идеале репозиторий необходимо размещать на сервере, но в качестве ознакомления базовых принципов будем считать что наш ПК - это и сервер и клиент.
Следуюющее что необходимо сделать - создать локальную копию репозитория. Именно с этого действия начинается работа на клиенте. Для этого служит комманда clone
Вот ее описание:
При этом взаимодействовать можно абсолютно с любым репозиторием. Но как правило на предприятии выделяют какойто серверный репозиторий (центральный) - на которого завязывается все взаимодействие.
Mercurial: первые впечатления
Если вы все еще используете SVN – перестаньте. Mercurial и Git – это антибиотики. Теперь существуют технология лучше.Думаю не спроста такая авторитетная личность как Джоел, будет так высказыватся. И тут я понял, что нужно менять свое отношение к меркуриалу, хотя стырый добрый свн уж как мне по душе. Да и в проект меня пригласили, в котором опять таки код лежит на меркурале.
Ну что же - начнем.
Mercurial - кроссплатформенная система управления версиями. Написана на Python со "вставками" С. Стоит заметить, что сами разработчики питона с недавних пор начали юзать меркуриал - опять таки еще одит плюс.
Mercurial, в отличии от SVN, является распределенной системной. Более подробно о распределенности можно почитать здесь. Вкратце разницу межну централизованными и распределенными системами можно показать на схемах
С данных схем можно понять, что фактически у кждого, кто работает с репозиторием меркуриала, на локалке есть своя копия репозитория - и комиты делаются именно в него. Если же нужно залить изменения на сервер - делается объединение веток репозиториев на сервере и на локальной машине. Такая архитектура более отказоустойчива и позволяет обмениваться изменениями даже при отсутствии связи с сервером.
Операции с Mercurial как и в SVN выполняются через консоль и опять таки как и в SVN у Mercurial есть свой юзер-интерфейсед клиент Mercurial tortoiseHg. К расмотрению клиента перейдем немного по позже, сейчас же остановимся на основных командах. Полный лист команд можно найти на оф. сайте http://www.selenic.com/mercurial/hg.1.html.
Вся работа с системой котроля версий Mercurial происходит с помощью команды hg.
Для начала создадим репозиторий. Для этого служит комманда Init
Вот ее описание:
- hg init [-e CMD] [--remotecmd CMD] [DEST]
- Initialize a new repository in the given directory. If the given directory does not exist, it will be created.If no directory is given, the current directory is used.
- options:
- -e, --ssh specify ssh command to use
- --remotecmd specify hg command to run on the remote side
>hg init meRepos
В текущем каталоге будет создан репозиторий с папкой .hg - здесь то в и хранится вся история измениений (не напоминает SVN? -:) )
Мы создали главный репозиторий. В идеале репозиторий необходимо размещать на сервере, но в качестве ознакомления базовых принципов будем считать что наш ПК - это и сервер и клиент.
Следуюющее что необходимо сделать - создать локальную копию репозитория. Именно с этого действия начинается работа на клиенте. Для этого служит комманда clone
Вот ее описание:
- clonehg clone [OPTION]... SOURCE [DEST]
- Create a copy of an existing repository in a new directory.
- If no destination directory name is specified, it defaults to the basename of the source.
- The location of the source is added to the new repository's .hg/hgrc file, as the default to be used for future pulls.
- options:
- -U, --noupdate the clone will include an empty working copy (only a repository)
-u, --updaterevrevision, tag or branch to check out
-r, --rev include the specified changeset
-b, --branch clone only the specified branch--pull use pull protocol to copy metadata--uncompressed use uncompressed transfer (fast over LAN)
-e, --ssh specify ssh command to use--remotecmd specify hg command to run on the remote side
При этом взаимодействовать можно абсолютно с любым репозиторием. Но как правило на предприятии выделяют какойто серверный репозиторий (центральный) - на которого завязывается все взаимодействие.
Mercurial: первые впечатления
Подписаться на:
Сообщения (Atom)