Как я должен использовать Подвижный в качестве одинокого разработчика?

62
задан skaffman 17 May 2012 в 08:10
поделиться

12 ответов

Я использую Подвижный для разработки FsCheck, платформа поблочного тестирования, размещенная в codeplex. Я в настоящее время - единственный разработчик, но иногда люди отправляют мне патчи.

Конкретно, у меня есть одна папка в моей файловой системе под названием "FsCheck". В этом у меня есть один репозиторий и таким образом папка, названная основной. Как правило, у меня есть несколько папок рядом с, что, где я работаю над определенными функциями или исправлениями ошибок или что бы то ни было, скажите ошибку-escapingexceptions и подвиг-statefulchecking и патч-userFoo. Они создаются с помощью hg клон.

, Когда я сделан с функцией или bugfix, я фиксирую все в той папке и нажатии к основному. Возможно слияние в основном. (hg фиксация, hg нажатие, hg слияние). Тогда я удаляю папку (тщательное использование hg состояние и выход hg, что я не выбрасываю что-то полезное).

я почти никогда не работаю в основном кроме прямо перед выпуском, где я делаю заключительную очистку (скажите что документация). Перед выпуском я отмечаю на основном с номером выпуска (hg, отмечают v0.5.1).

Codeplex использует svn в качестве sourcecontrol. Я только использую его для хранения выпусков, для которых я использую локально проверенный SVN, работающий копия, в которую я копирую Подвижный репозиторий с помощью hg архив. Тогда фиксируйте использовать svn. Примитивный, но это работает (использование Подвижного, поскольку SVN 'супер клиент' на окнах еще не очень удобен для пользователя в моем opnion)

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

, Таким образом:

  • Одна папка для хранения репозиториев всего проекта, с названием проекта
  • В той папке один основной репозиторий и один переходный репозиторий на "единицу работы", с описательным именем для единицы работы.

Это - хорошая причина Ваши ответвления и что Вы продолжаете работать, интуитивно видимо в файловой системе.

35
ответ дан Kurt Schelfthout 24 November 2019 в 16:52
поделиться

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

у Вас должен быть единый репозиторий для каждого проекта. Можно думать о репозитории просто как о папке в файловой системе. При инициализации Подвижного репозитория в конкретной папке каждый файл в той папке и любой из ее подпапок имеет право быть добавленным к репозиторию, который будет управляться версией. Необходимо не обязательно добавить все, но любой из него сможет быть добавленным, если Вы захотите.

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

Ответвления обычно используются для хранения различных "версий" разделенного проекта. Как некоторые люди упомянули, это может быть полезно как сольный разработчик для испытания метода рефакторинга кода или тестирования другого подхода к конкретной проблеме. Если это не удается, Вы не должны волноваться о выяснении, где откатывать к, Вы просто поджигаете ответвление. Если это действительно работало, Вы объединяете ответвление назад в основной репозиторий ("соединительная линия") и продолжаете.

, Если Вы действительно переходите к сути дела, где Вы делаете "выпуски" кода, и необходимо продолжать поддерживать старые версии, Вы также захотите использовать ответвления. Например, предположите, что Вы версия выпуска 1.0 и некоторые люди начинаете использовать его. В то время как они используют его, Вы конфиденциально продолжаете работать для следующего выпуска, возможно, 1.1, добавляя опции в Вашем магистральном репозитории. Теперь, кто-то обнаруживает ошибку в выпущенных 1,0 кодах, которые необходимо исправить, но Вы не можете только зафиксировать их в соединительной линии и дать им, что код, потому что это не находится ни в каком состоянии, которое будет выпущено. Это - то, где эти 1,0 ответвления пригождаются. Можно исправить ошибку в этих 1,0 ответвлениях и объединить изменение bugfix в соединительную линию, так, чтобы ошибка была исправлена там также. Затем можно повторно упаковать 1.0 с bugfix и вывести его пользователям, не имея необходимость выяснять, как получить соединительную линию в состояние, что он мог быть опубликован.

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

Для получения дополнительной информации, я высоко предлагаю не торопиться для прочтения этой книги: Распределенное управление версиями с Подвижным . Вы не должны читать в усовершенствованные темы, но читающий, по крайней мере, главы 1-5 и 8 даст Вам хорошее введение в Подвижное и управление версиями в целом.

29
ответ дан Chad Birch 24 November 2019 в 16:52
поделиться

Я использую другую распределенную систему управления версиями, чем Подвижный, но я сомневаюсь, что она имеет значение для этого.

На моих сольных проектах, я использую ветвление справедливо в большой степени. У меня обычно есть основное ответвление разработки ("соединительная линия"), которая, как предполагается, имеет рабочую версию в любом случае. Этим я подразумеваю, что модульные тесты и другая автоматизированная тестовая передача, и что весь код тестируется этими тестами, кроме маленьких битов, которые я явно исключил из тестового покрытия. Это гарантирует, что соединительная линия всегда находится в хорошей форме для дальнейшего развития.

Каждый раз, когда я начинаю работать над изменением, я создаю новое ответвление от магистрального ответвления. Это дает мне свободу взломать свободно. Я не мог бы волноваться об автоматизированной тестовой передаче в этом ответвлении, например. Так как это - изолированная область, я могу фиксировать так часто, как мне нравится, и я делаю: микрофиксации являются моей любимой функцией с распределенным управлением версиями. Когда работа в ответвлении закончена, я объединяю его назад для транкинга.

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

Иногда я ленив и не создаю новое ответвление для некоторой новой вещи, которую я разрабатываю. Неизменно оказывается, что это - ошибка, когда мне требуется больше времени, чем я ожидал заканчивать работу. Это ухудшается, когда я должен сделать другого, несвязанное изменение посреди этого. То, когда я следую за стилем all-work-in-its-own-branch, несвязанное изменение может быть сделано в его собственном ответвлении, объединилось в соединительную линию, и затем другое ответвление может объединить изменение от соединительной линии, если это необходимо.

5
ответ дан 24 November 2019 в 16:52
поделиться

Я использую Подвижную ежедневную газету, вижу здесь , я также выручаю в одной из нескольких услуг по бесплатному размещению, которая поддерживает Подвижный, ShareSource (я нахожусь на странице кредитов). Я использовал HG с тех пор , Xen отбросил BitKeeper.

я советовал бы Вам, для персональных проектов, избежал бы ответвлений любой ценой. Mercurial идея того, что ответвление , отличается вполне немного от того, что Вы ожидали бы. Другие системы как Мерзавец делают ветвление (и идеи сумасшедшего ученого) немного легче. Однако я только использую Мерзавца, когда мне нужны легкие, дешевые ответвления.

Мой типичный день с hg:

(See where I left off)
# hg status 

(See what I was doing with foo)
# hg diff -r tip src/foo/foo.c

(Finish one module, commit it)
# hg commit src/foo/foo.c

(Push changes)
# hg push

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

я запустил несколько сольных проектов хобби, которые стали дико популярными спустя год после того, как я выпустил их, я рад, что использовал HG. Его синтаксис близко к подверсии, его очень интуитивному и чрезвычайно портативному.

Несомненно, да, я использую Мерзавца и SVN.. но не для персональных проектов. Примечание по моему индексу repo (отправленная ссылка), я переписал hgwebdir в PHP, потому что я хотел изменить его взгляд легко и вытянуть RSS от каждого repo.

Короче говоря, для персонального использования, Вы найдете это ОЧЕНЬ дружественным. Фиксации, теги, и т.д. просты.. избегайте ответвлений, если Вам действительно не нужны они.

Это - учебное руководство, что я записал некоторое время назад описание, как использовать Подвижный для управления веб-сайтом , Вы могли бы найти его интересным при установке ключей, hgrc, и т.д.

5
ответ дан Tim Post 24 November 2019 в 16:52
поделиться

Это обычно то же, поскольку Вы работали бы над любым проектом программного обеспечения. Просто наличие или не наличие управления версиями вне любого обсуждения;)

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

Для ветвления: в моем сольном проекте я использую его главным образом для попытки идей, например, когда у меня есть другое решение для той же проблемы. Для этого я также люблю команду притона Мерзавца.

Однако у меня действительно есть несколько репозиториев. У меня есть хостинг с доступом оболочки, к которому я продвигаю. Таким образом, я могу синхронизировать с этим repo, неважно, где делают я работаю и безотносительно рабочей станции, которую я имею (на работе: когда у меня есть некоторое время для кодирования, дома рабочий стол и на lappy когда в доме родителя).

3
ответ дан Marcin Gil 24 November 2019 в 16:52
поделиться

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

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

, Но возможно Вы извлечете что-то из вопрос , я позировал ранее.

2
ответ дан Community 24 November 2019 в 16:52
поделиться

Я использовал CVS, По необходимости, Подрывная деятельность прежде как моя система управления персональной версии и перешел к Подвижному с тех пор приблизительно две недели назад:-) На работе, мы используем Систему Команды MS...

Для меня самой известной новой вещью является легкая передача между различными машинами. На работе у меня есть материал в подвижном repo (использующий hg как Суперклиент против Системы Команды). Я regularily продвигаю/вытягиваю все изменения в своем Ноутбуке, таким образом, у меня есть полная история в обеих машинах.

Дома я также продвигаю/вытягиваю repo от Ноутбука.

В результате я могу работать везде, где я (домашний офис с помощью раскормленного компьютера, на дороге с помощью ноутбука или на работе) и не волнуюсь, потеряю ли я изменения. Хорошо, иногда я должен объединить два изменения, но это редко причиняет боль... hg, делает это вполне приятно, по моему скромному мнению.

Кроме того, "стоимость установки" с подвижным является довольно низкой. Вы читаете учебное руководство, устанавливаете его, говорите "hg init" и продолжаете работать. Больше никакого decding, если что-то принадлежит в Ваш священный сервер SVN, куда поместить его и так далее. "Трение" Mercurial немного ниже, чем SVN's.

1
ответ дан froh42 24 November 2019 в 16:52
поделиться

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

Этот путь можно исправить ошибки в основном ответвлении при создании новой возможности в своем собственном ответвлении.

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

я соглашаюсь, что это - отдельный вопрос от резервных копий.

Удачи,
Randy Stegbauer

0
ответ дан Randy Stegbauer 24 November 2019 в 16:52
поделиться

SCM является своего рода "умным" расширением буфера отмены Вашего редактора. Можно возвратиться время, Вы, возможно, решили проблему, но удалили ее, потому что она была пересмотрена, но Вам будет нужно решение снова и т.д. Настройте визуальную разность, и она скажет Вам, что Вы изменили начиная с последней фиксации или за прошлые два дня, я постоянно рассматриваю свой код и изменяю ее, если мне не нравится мое старое решение.

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

Быть остерегаются этого, DVCSs обрабатывают репозиторий как единый блок. Можно фиксировать файл файлом (использующий фильтры), но они хранят изменения против целого репозитория. Это путает cvs (svn) пользователи, где единственные изменения файла являются более регулярными.

0
ответ дан teki 24 November 2019 в 16:52
поделиться

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

0
ответ дан 24 November 2019 в 16:52
поделиться

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

0
ответ дан Rad 24 November 2019 в 16:52
поделиться

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

  1. можно быстро экспериментировать с "одноразовым" кодом, если Вы поддерживаете дисциплину в совершенствовании рабочих ответвлений или от магистрали и синхронизируете все Ваши дельты значительно в DVC.

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

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

    a. При принятии этого подхода, Вы могли бы хотеть продвинуть изменения в repo вне хоста в конце рабочего дня для покрытия времени между работа, сделанная в течение дня и время, в которое резервное копирование на WHS происходит .

    b. Я установил CopSSH на моем WHS, и он работает, замечательно предоставляя SSH/SFTP/SCP функциональность полю окон в ~5MB. перед этим я выполнял Ubuntu Linux на Виртуальном сервере 2005 для обеспечения, среди других сервисов, схожей функциональности. можно продвинуть подвижное к полю WHS по ssh

0
ответ дан 2 revs 24 November 2019 в 16:52
поделиться
Другие вопросы по тегам:

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