Ртутный источник контроля - плюсы и минусы Форкинг - PullRequest
2 голосов
/ 11 мая 2011

Я настраиваю BlogEngine.Net для поддержки пользовательских локальных функций (календарь на фарси, тема RTL и т. Д.)

BlogEngine.Net использует систему контроля версий Mercurial, и я могу создать разветвление проекта и зафиксировать в нем свои изменения. Но я хотел бы выпустить его как отдельный проект, поскольку в коде есть значительные модификации для поддержки персидского языка, и я не собираюсь отправлять запрос на извлечение в основной проект. AFAIK У меня есть два варианта:

  1. Я могу загрузить исходный код BlogEngine.Net, создать новый проект, зафиксировать исходные файлы, а затем зафиксировать мои изменения в хранилище.
  2. Я могу раскошелиться на основной проект и иметь репозиторий клонов. тогда я могу зафиксировать в этом хранилище.

Теперь, каковы преимущества использования вилки? если я создаю форк, смогу ли я выпустить свой проект на отдельной странице, как независимый проект (вариант № 1)? Говоря «своя собственная страница», я имею в виду, что хотел бы иметь такой адрес, как «FarsiBlogengine.CodePlex.Com», и сделать бинарную версию, версию исходного кода доступной для загрузки, иметь дискуссионный форум и т. Д. Так же, как и функции, которые у меня есть когда я не пользуюсь вилкой.

Каковы преимущества использования разветвления вместо загрузки основного проекта, создания нового проекта и принятия нового проекта?
Спасибо.

1 Ответ

5 голосов
/ 11 мая 2011

Основное преимущество разветвления (он же клонирование) (он же вариант 2) заключается в том, что ваш репозиторий будет содержать всю историю родительского репозитория, что позволяет при необходимости извлекать или извлекать этот репозиторий.Используя опцию № 1, вы начинаете со снимка родительского репозитория и теряете историю проекта / происхождение.

При определении того, связаны ли два репозитория, Mercurial будет искать общего предка - в случае варианта № 1 у вас его не будет, а в случае варианта № 2 у вас будет.Даже если вы прямо заявили, что не хотите выполнять какую-либо синхронизацию с родительским репо (push / pull / etc ..), вы можете обнаружить, что BlogEngine.net выпускает исправление критической ошибки, которую вы хотите перенести и выполнить извлечение.время от времени.Вариант № 1 не позволит вам сделать это, потому что он не найдет общего предка, но вариант №2 позволит это сделать.

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

...