Могу ли я работать в репозитории в однопользовательском рабочем процессе Mercurial? - PullRequest
2 голосов
/ 21 марта 2012

Я использую Mercurial в однопользовательском рабочем процессе, чтобы иметь возможность откатывать изменения, если мое кодирование или запись идет ужасно неправильно (я в основном использую пакеты статистики Stata и R и LaTeX).Работая только локально, это было легко, так как все, что у меня есть, - это главный репозиторий.

Недавно я начал подключаться к серверу Linux для большей вычислительной мощности.До сих пор я вручную копировал файлы туда-сюда и использовал Mercurial только локально, но я бы хотел использовать Mercurial, чтобы позаботиться об этом и сохранить синхронизацию этих двух рабочих процессов.Кроме того, мне нравится возможность кодировать как локально (на моем ноутбуке или настольном компьютере), так и на сервере.

Нужно ли работать с клоном основного репо на сервере и не трогать главное репо?Или я могу работать непосредственно в основном репо, когда я нахожусь на сервере?В этот вопрос @gizmo указывает на это руководство рабочего процесса ;обсуждение «одного разработчика» полезно, но мне все еще не ясно, могу ли я работать в основном репо, пока я на сервере, не вызывая какой-то серьезной проблемы, которую я пока не понимаю.

Спасибо!

Редактировать: я должен добавить, что я работал с учебником Джоэла Спольски по HgInit.com, и я чувствую себя комфортно, нажимая / вытягивая / клонируя / и т. Д. Через ssh, но я все еще не уверен, смогу ли я работать восновной репо, не вызывая душевную боль позже.Или, может быть, это больше философский вопрос?Спасибо!

Ответы [ 2 ]

4 голосов
/ 21 марта 2012
  • Mercurial - это DVCS, это означает - в в каждом месте у вас есть и локальная рабочая копия, и локальный репозиторий
  • Mercurial - это DVCS, это означает, что вы можете свободно обмениваться (вытягивать | отправлять) данными между репозиториями (, если они предоставляют методы удаленного доступа).

Если вы

удобное нажатие / вытягивание / клонирование и т. Д. Через ssh

и не забудьте выполнить цикл pull | push вокруг вашей работы дома (чтобы не запускать hg serve на home-host и синхронизировать с сервером в качестве источника Вы не испытываете никакой головной боли с идеальной линейной агрегированной историей в каждом месте. И даже если вы забудете иногда синхронизировать репо, в худшем случае вы получите две головы позже, которые вы сможете легко объединить (не знает форматов файлов данных Stata и R, но LaTeX, как текст, является объединяемым)

2 голосов
/ 21 марта 2012

Нет проблем с работой непосредственно в хранилище на вашем сервере. С точки зрения Mercurial, «основной» репозиторий - это просто еще один случайный репозиторий - Mercurial не считает его особенным.

Вы не говорите это прямо, но одна вещь, которую люди спрашивают, это "Что происходит, когда я нажимаю на сервер?" Ответ в том, что hg push отправляет данные только в хранилище (папка .hg/). Рабочая копия не трогается на сервере, когда вы нажимаете на нее. Поскольку вы отправляете новые наборы изменений на сервер, вам может потребоваться запустить hg update при следующей работе на сервере. Это так же, как если бы вы запустили hg pull на сервере - там вы также будете сливать или обновлять потом.

У меня такая ситуация постоянно: я создаю хранилище дома и клонирую его на свой компьютер на работе. Я изменяю файлы в любом месте и нажимаю / толкаю между двумя репозиториями. Если мне нужно поделиться своей работой с другими, тогда я создаю репозиторий в Bitbucket и помещаю туда код. Таким образом, Bitbucket служит хорошим каноническим хранилищем кода, и я обычно меняю путь по умолчанию на Bitbucket в хранилищах дома и на работе. Так что дома у меня будет:

[paths]
default = httsp://bitbucket.org/mg/<repo>/
work = ssh://mg@work/<repo>

чтобы я мог сделать hg push для отправки вещей в Bitbucket и hg pull work для захвата вещей непосредственно с работы (на случай, если я забыл нажать в Bitbucket перед уходом).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...