Лучший контроль версий для одиночного разработчика

Сейчас я один разработчик; пожалуйста, поделитесь опытом с тем, что является хорошей настройкой VC для одинокого разработчика.

Мои ограничения;

  • Я работаю на нескольких машинах и должен поддерживать их синхронизацию.
  • Иногда я работаю в автономном режиме

В настоящее время я использую Subversion (только клиент для удаленного сервера), и это работает нормально. Меня интересуют Mercurial и git DVCS, но ни один из их прецедентов не имеет смысла для моей ситуации.

EDIT: я перенес свою активную разработку в Fossil http://www.fossil-scm.org/ после пробной версии с клиентом. Мне очень нравятся функции автосинхронизации моих репозиториев (сокращение случайных вилок), поддержка документации (как вики, так и встроенная/версия), которая поддерживает мою потребность документировать код и проект в разных пространствах, простой в настройке трекер проблем, хороший доступ контроль, скин-интерфейс и полезное сообщество.

Ответ 1

Возможно, я предлагаю довольно новый контроль версий под названием fossil.

Это не мой проект, он написан доктором Ричардом Хиппом, тем же парнем, который занимался SQLite. Весь репозиторий - это SQLite файл, поэтому он очень прочный. У вас есть вики и система билетов. Вы можете иметь множество пользователей с различными правами, поэтому вы можете, например, дать своим пользователям право выдавать билеты, но не просматривать исходный код.

Это довольно просто, прямо и работает как распределенная система, что означает, что вы можете клонировать и проверять локально и удаленно.

Более подробную информацию можно найти на http://www.fossil-scm.org/, и если вы посмотрите внимательно, вы увидите, что весь сайт фактически окаменел.

Одна вещь, которая действительно поразила меня окаменелостью, состоит в том, что это всего лишь один файл, вот и все. Вся ископаемая программа довольно мала, но, учитывая, кто автор, это не удивительно.

И так как ваш репозиторий - это файл sqlite, вы просто копируете его, и у вас есть резервная копия.

Ответ 2

Каждый человек, вероятно, скажет вам, что их любимый DVCS является лучшим для вас. Я бы сказал, что Меркуриал - лучший!; -)

Но это дерьмо. Вам определенно нужен DVCS, но попробуйте их всех или, по крайней мере, в основном используемые, и сделайте свой выбор самостоятельно. Выбор DVCS, которым вы знаете гуру, также является разумным выбором, BTW. Я бы рекомендовал попробовать (или прочитать документацию) по крайней мере Mercurial, Git и Bazaar. SVK может иметь желаемую функцию, которую он предназначен для взаимодействия с SVN, но в прошлый раз, когда я проверил, у них были неприятные проблемы с производительностью. Git также имеет некоторый плагин взаимодействия SVN, AFAIK.

Ответ 3

Работа в автономном режиме имеет смысл для Git. Вы можете просматривать всю свою историю, совершать коммиты, делать слияния, создавать ветки, в основном делать все, что связано с вашим репозиторием в автономном режиме. Кроме того, вы можете настроить центральный репозиторий, который является "мастером", то есть вы будете перенаправлять все ваши изменения в этот центральный репозиторий. Таким образом, вы всегда знаете, где находится последний код, но вы также получаете возможность отправлять изменения с одной машины на другую, если вам когда-либо понадобится.

Недавно я преобразовал все мои 80+ репозитории Subversion в Git, и я не оглядывался назад.

Ответ 5

Subversion отлично работает (особенно с TortoiseSVN). Я не думаю, что любой распространенный VC имел бы преимущество в одном сценарии разработчика.

Изменить: я не заметил, что "иногда я работаю в автономном режиме", когда я изначально ответил. В этом случае, я полагаю, вы должны весить дополнительную сложность DVCS с тем, что он дает вам автономную историю/ревизии.

Ответ 6

Я всегда рекомендую darcs для этой ситуации (здесь мой ответ на аналогичный вопрос), поскольку пользовательский интерфейс командной строки - это радость, и радость - это то, что я хочу от своего собственного развития:)

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

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

Ответ 7

Subversion требует доступа к централизованному репозиторию. Если вы работаете в автономном режиме и с нескольких компьютеров, это означает, что вы не можете делать изменения в автономном режиме.

Решение Unix для голой кости будет содержать историю внутри рабочего каталога RCS и синхронизировать рабочий каталог (в том числе история) между различными машинами, используя Unison. Главное предостережение в том, что если вы переключите машины, вам сначала нужно будет их синхронизировать, прежде чем вы начнете совершать новые изменения. Если это проблема, лучше всего взглянуть на настоящий DVCS.

Ответ 9

Вам нужно попробовать DVCS (или то, что я называю peer2peer VCS). Я согласен с nowhereman. Не тратьте время на svn и все мягкие, сделанные вокруг него, чтобы сделать его полезным. DVCS это больше интуитивно, что старый и устаревший стиль клиент-сервер. SVN не знает, что такое тег, или ветвь. Для Svn все просто копии.

Например: так сложно реализовать тег как синоним номера версии.

В меркуриальном теге есть только это. Вы не можете продолжать отслеживать версии тега, как вы можете в svn.

Прочтите здесь руководство dvcs для начала. Затем вы можете использовать svk, mercurial aka hg или git. Но, пожалуйста, не возвращайтесь вовремя.

Ответ 10

Я большой поклонник распределенного контроля версий. Я играл с git, mercurial и bzr, и теперь я использую git для всех моих проектов. Все три из них отлично подходят для личного использования, потому что так просто создать новый репозиторий на вашем компьютере. Вам не нужно запускать какие-либо серверы.

Вот несколько идей для совместного использования вашего репозитория на нескольких компьютерах. 1) Используйте некоторые размещенные службы, такие как github. Обычно они бесплатны для проектов с открытым исходным кодом и низкой платы за коммерческие проекты. Мы используем github на работе. 2) Используйте Dropbox для создания общего резервного интернет-диска, доступ к которому доступны всем вашим компьютерам. Это бесплатно для менее 2 ГБ. (Если вы работаете в Ubuntu, Ubuntu One - еще одна альтернатива.) Поместите основной репозиторий git в Dropbox и затем поместите локальные репозитории на каждый из ваших компьютеров. (Таким образом, dropbox играет ту же роль, что и github). Он полностью бесплатный, позволяет вам работать в автономном режиме, позволяет вам позже предоставлять общий доступ к репозиторию другим разработчикам и автоматически создавать резервные копии.

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

Ответ 11

SourceGear Vault является бесплатным для одного разработчика и очень хорош.

Ответ 12

Я рекомендую assemblyla.com - они предоставляют бесплатные svn, wiki и trac. Не могу получить лучше!

Ответ 13

Если вы умеете с subversion, я предлагаю вам взглянуть на SVK