Однопользовательская система управления версиями для нескольких компьютеров

596
user001

У меня есть два компьютера (рабочий и домашний), и я хочу настроить систему контроля версий для исходного кода и документов TeX. Соавторов нет (т.е. однопользовательский / редактор). Большинство исходных файлов написаны с использованием редактора vi. Я хотел бы, чтобы версия источника / документа была доступна на обоих компьютерах.

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

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

2
странный вопрос, но почему здесь не работает Dropbox? Journeyman Geek 12 лет назад 2
Я думаю, что DVCS здесь очень важен, если «синхронизировать два компьютера» означает синхронизировать разные версии документов TeX, тогда DVCS в 100 раз лучше, чем любое файловое решение. С одной оговоркой: кривая обучения огромна, вы должны выучить не только много технических понятий, но и хорошие привычки. Adrian Ratnapala 12 лет назад 2
@JourneymanGeek: Dropbox не слишком хорош в управлении версиями ... Если вы имеете дело с любыми текстовыми и изменяющимися данными, вам абсолютно необходим контроль версий. Joanis 12 лет назад 0
Я использую Mercurial (Hg) для управления моими личными файлами. Простой в использовании с интерфейсом, таким как TortoioseHg. Щелкните правой кнопкой мыши, подтвердите, сделано. iglvzx 12 лет назад 0

3 ответа на вопрос

5
Bahman M.

Отказ от ответственности: мое предложение предполагает, что у вас есть подключение к Интернету как дома, так и на работе.

У меня почти такая же ситуация. Я управляю своим исходным кодом и документами, используя gitбесплатную учетную запись UbuntuOne. Всякий раз, когда мне нужно что-то изменить / добавить, я просто cloneсоздаю необходимый репозиторий (например, «Project X docs») и выполняю работу локально либо на рабочем, либо на домашнем компьютере, либо на обоих, а затем отправляю изменения. В нескольких случаях я даже делился репозиторием или двумя с коллегами для просмотра / редактирования файлов. gitне подводил меня до сих пор с его превосходными средствами слияния.

НТН,

Спасибо за ваше предложение, Бахман. Я буду смотреть в мерзавца. Добавляет ли использование облачного сервиса что-то кроме дополнительной безопасности? user001 12 лет назад 0
Есть и другие хорошие службы размещения исходного кода, которые могут работать. Одним из моих любимых является bitbucket, который, как я считаю, предлагает бесплатный частный Mercurial и Git-хостинг, когда в репозитории менее 5 пользователей. John Chadwick 12 лет назад 0
Как указывает Джон, UbuntuOne - не главное, а Git (или Mercurial, если вы предпочитаете). Если одна или обе ваши машины имеют постоянный адрес и могут выступать в роли «сервера», вам не нужно ничего помещать в облако. Если вы сделаете это, BitBucket и GitHub будут технически лучше, чем UbuntuOne - но я не знаю, справедливо ли использовать бесплатные аккаунты для личных вещей. Adrian Ratnapala 12 лет назад 0
@ user001 Если честно, я просто помещаю свои файлы в облако, потому что тогда я могу получить к ним доступ из любого места. Также, если у вас есть время, как сказал Адриан, у вас может быть свой собственный сервер. Bahman M. 12 лет назад 0
@ user001: дополнительная безопасность является относительным вопросом, когда речь заходит об облаке. Если у вас есть конфиденциальные данные, если они не зашифрованы по последнему слову техники, забудьте о облаке. Joanis 12 лет назад 0
2
Joanis

Система синхронизации и система контроля версий - это две разные вещи, отвечающие различным потребностям.

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

Теперь, если вы используете централизованное управление версиями, вам придется выбрать сервер. Затем вам придется сделать резервную копию этого сервера, потому что у вас будет только текущая версия кода на другом компьютере. Вот почему я бы посоветовал вам поискать распределенный контроль версий. Git или Hg (Mercurial) подойдет. Таким образом, у вас есть полная история версий кода на обоих компьютерах. Если кто-то умирает, вы ничего не теряете (по крайней мере, кода!).

НО, если вы хотите синхронизировать ВСЕГДА, использование централизованной системы контроля версий не так уж и плохо, поскольку вы можете просто синхронизировать ее файлы с другим компьютером. Таким образом, у вас есть централизованное + автоматическое резервное копирование. Все еще распределенный будет иметь больше гибкости, когда вы передумаете.

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

1
Lazy Badger

Я думаю, что вопрос в этом посте уникален.

Нет на самом деле, один пользователь один места | расположение много-много пользователей или любая промежуточная ситуация не вносит больших изменений в используемые СКМ

  • Если оба рабочих места подключены к Интернету и всегда доступны для повторного подключения, вы можете в любое время выбрать любую * VCS (даже CVCS) и выполнить обновление из репо (для DVCS - переключение из последнего использованного репо в старое) без 3-го посредника.
  • Если хосты не всегда онлайн, используйте (снова) любой SCM и сохраняйте работу на любом SCM-хостинге, поддержка которого выбрана вами SCM
  • Если хост находится в автономном режиме, вы можете вспомнить «Omnia mea mecum porto» и иметь, например, Fossil SCM (переносной, одиночный exe, кроссплатформенный) и репозиторий на флэш-накопителе

Похожие вопросы