Резервное копирование локального хранилища Mercurial - PullRequest
10 голосов
/ 24 марта 2010

Я большой поклонник поддержки вещей. Я храню свои важные школьные сочинения и тому подобное в папке моего Dropbox. Я удостоверяюсь, что все мои фотографии дублируются на внешний диск. У меня есть домашний сервер, на котором я храню важные файлы, отраженные на двух дисках внутри сервера (например, программный RAID 1).

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

Теперь я изучаю Mercurial и должен признать, что я еще не использовал его по-настоящему, так что я могу ошибаться. Но мне кажется, что у вас есть серверное хранилище, а затем вы клонируете его в рабочий каталог в виде локального хранилища. Затем, когда вы работаете над чем-то, вы делаете коммиты в этот локальный репозиторий, а когда вещи находятся в состоянии, которым можно поделиться с другими, вы hg push отправляете родительский репозиторий на сервер.

В промежутках между стабильным, проверенным, без ошибок кодом, где находится резервная копия?

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

Это довольно много, или я что-то пропустил? Если вы используете Mercurial, как вы делаете резервную копию ваших локальных репозиториев? Если бы вы включили компьютер этим утром, и ваш жесткий диск загорелся (или, что более вероятно, читающая головка испортилась, или ОС повредила сама ...), что будет потеряно? Если вы потратили последнюю неделю на разработку модуля, написание тестовых примеров для него, документирование и комментирование, а затем вирус стирает ваш локальный репозиторий, разве это не единственная копия?

Итак, с другой стороны, вы создаете удаленный репозиторий для каждого локального репозитория и все время добавляете к нему?

Как вы находите баланс? Как вы обеспечиваете резервное копирование своего кода? Где грань между использованием Mercurial в качестве резервной копии и использованием утилиты резервного копирования локальной файловой системы для обеспечения безопасности ваших локальных репозиториев?

Ответы [ 3 ]

11 голосов
/ 24 марта 2010

Это нормально думать о Subversion как о «резервной копии», но на самом деле он делает это только потому, что находится на отдельной машине, что на самом деле не присуще Subversion. Если ваш сервер Subversion был той же машиной, что и ваша машина разработки - что не редкость в мире Linux - вы на самом деле не имеете резервной копии в смысле защиты от аппаратного сбоя, кражи, пожара и т. Д. И на самом деле, есть некоторые данные в этом случае вообще не сохраняются - ваш текущий код может существовать в двух местах, но все остальное в хранилище (например, история изменений) существует только в одном месте, на удаленном сервере.

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

9 голосов
/ 24 марта 2010

В «скрытом» каталоге .hg хранятся все локальные коммиты. Вы можете создать резервную копию этого каталога, используя стандартную программу резервного копирования.

2 голосов
/ 24 марта 2010

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

С другой стороны, ничто не мешает вам иметь несколько машин и передавать контент с одного на другой. Каждый ртутный репозиторий может за несколько секунд превратиться в сервер, набрав «hg serve».

Я не уверен, что это действительно ответит на ваш вопрос, но я также большой поклонник резервного копирования и управляю этим способом со многими клонами моего хранилища (я также использую mq для работы в режиме патча, но это другая история ).

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

...