вторник, 12 апреля 2011 г.

Почему git плох?

Крики из зала

Очень часто в сети можно услышать/прочитать, что git сложнее, чем
"правильные" dvc. Цель данного поста не заставить читателей переходить
на git, а показать, что в повседневном использовании он ничем не
отличается от других систем контроля версий.
Рассмотрим наиболее используемые команды. Эти комманды я ввожу
десяток раз на день (если не чаще), как и многие другие
пользователи. Я не вижу смысла сравнивать по редко используемые или
специфичные только для определенных workflow. И так, поехали...

 

Создаем репозиторий

git
git init reponame

hg
hg init reponame

bzr

bzr init reponame
Для bzr есть возможность создания shared-репозитория. Он нужен для
того, чтобы экономилось дисковое пространство и быстрее работал сам bzr.
bzr init-repo reponame

commit

Операции подтверждения изменений является наиболее часто используемой
мною (да, пожалуй, большинством тоже).

git

git commit -m "Commit message" filename
или, если есть алиас ci=commit
git ci -m "Commit message" filename
Так же, можно закомитить все изменения врабочей директории:
git ci -a -m "Commit message"

hg

hg ci -m "Commit message" filename
Или для подтверждения всех изменений
hg ci -m "Commit message"

bzr

bzr ci -m "Commit message" filename
Или для подтверждения всех изменений
bzr ci -m "Commit message"

Создаем ветку

git

git branch branchname
или так: создаем ветку и сразу на нее переключаемся.
git checkout -b branchname
У меня, да и у мнгоих пользователей git, есть alias на эту команду,
поэтому можно и так:
git co -b branchname
Чтобы переключиться между веткми, нужно использовать такую команду:
git co branchname

hg

hg branch branchname
Чтобы переключиться между веткми, нужно использовать такую команду:
hg co branchname

bzr

bzr branch oldbranch branchname
Дело в том, что в bzr каждая ветка находится в отдельном каталоге (я
знаю, что есть и gitlike ветки.) и нужно указывать ветку, от которой
идет ответвление.
Чтобы переключиться между веткми, нужно использовать такую команду:
cd path/to/branch

Переход к нужному коммиту

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

git

git checkout -b newbranch hash
В качестве hash выступает первые пять символов хеша.

hg

hg up -r rev

bzr

Я порылся в сети, но не нашел, как это сделать. Но подозреваю, что не
сложней чем в hg/git. Если кто знает - пусть напишет в комментариях.

Как видно, разницы нет никакой. Есть и более сложные команды, которые
одинаково сложны как в hg/bzr так и в git (например cherry-pick), но
это общая беда :)

Комментариев нет:

Отправить комментарий