Как я должен работать над проектом, размещенным в CVS, чтобы (1) исправлять ошибки и (2) поддерживать собственный приватный форк с дополнительными функциями - PullRequest
1 голос
/ 25 декабря 2010

Вопрос

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

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

Я бы хотел:

  1. Возможность легко создавать патч-бомбы для текущего источника CVS с моими собственными исправлениями ошибок
  2. Следите за историей на моих собственных функциях
  3. Внесите исправления и улучшения из основного дерева в мой новый ветвь
  4. Легко применяйте мои собственные исправления ошибок к моей новой функциональной вилке
  5. Возможность работать и отслеживать историю изменений без подключения к Интернету.

Какие у вас есть предложения для этого?

Моя текущая идея

Ниже приведены мои собственные предположения, чтобы дать вам лучшее представление о том, о чем я думаю.

У меня будет 3 ртутных хранилища.

Первые два репозитория управляются так, как указано в (https://wiki.mozilla.org/Using_Mercurial_locally_with_CVS). Один просто отражает последние изменения из CVS апстрима. Я делаю "cvs update", затем "hg commit" в этом репо. Второе репо содержит мой исправления ошибок в виде патчей с использованием расширения mq, и я вытаскиваю из первого репозитория и периодически повторяю свои патчи. Когда мои патчи включаются в основное дерево, я удаляю патчи из очереди патчей / делаю их постоянными коммитами .

Третий репо - мой местный форк. Это начнется как клон первого репо. Затем каждый раз, когда я делаю обновление первого репо, я извлекаю его из репо 3. Мои собственные функции будут непосредственно присутствовать в виде коммитов в этом репо. Когда я исправлю ошибку, я экспортирую патч из репо 2 и применю его к соответствующему пулу из репо 1.

1 Ответ

0 голосов
/ 25 декабря 2010

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

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

...