Mercurial source control — плюсы и минусы разветвления

#version-control #mercurial #codeplex #fork

#контроль версий #mercurial #codeplex #разветвление

Вопрос:

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

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

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

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

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

Ответ №1:

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

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

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

Комментарии:

1. Спасибо за ответ. Под «собственной страницей» я подразумеваю, что хотел бы иметь адрес типа «FarsiBlogengine. CodePlex.Com » и сделайте двоичную версию, версию исходного кода доступной для загрузки, создайте дискуссионный форум и т.д. Точно так же, как функции, которые у меня есть, когда я не использую разветвление. Возможно ли это?

2. @Kamyar: хорошо, я понимаю. Я не знаком с BlogEngine. сетевой сайт / программное обеспечение, поэтому я не могу ответить на этот вопрос за вас. С точки зрения Mercurial, нет существенной разницы между вариантами № 1 и № 2, поэтому, если у вас есть проблема, это будет BlogEngine. проблема с сетью. Удачи!

3. Спасибо dls. Однако мое беспокойство не имеет ничего общего с blogengine.net . Лучше сформулировать это так: могу ли я создать новый проект в codeplex и установить для его репозитория разветвленный репозиторий?

4. @Kamyar: Я не знаком с CodePlex, но я полагаю, что аналогичная функция существует в Google Code, и клонирование (разветвление) репозитория внутри Google Code действительно создает новый репозиторий. Ничто не мешает вам обращаться с этим разветвленным репозиторием как с вашим основным репозиторием. Попробуйте — это должно быть легко протестировать.

5. Спасибо dls. Я опубликую результаты здесь.