2009-05-12 2 views
2

Я нашел библиотеку с открытым исходным кодом, которая кажется очень полезной в моем проекте. Однако библиотека находится в состоянии alfa/beta и немного незрелая. Случилось так, что мне пришлось вручную применить патч или внести некоторые изменения полностью самостоятельно, чтобы избавиться от некоторых мелких ошибок в этой папке.Обработка и синхронизация собственной версии библиотеки с открытым исходным кодом с помощью SVN

Вопрос: Как я могу хранить и управлять своей «ветвью» в моем репозитории SVN?

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

Что я уже делал - это отметить папку (скажем, Ресурсы) с соответствующим свойством svn: externals. Затем я могу обновить с официального туловища «изнутри» рабочую копию, привязанную к моему репо. Очевидно, что я не могу совершать изменения. Кажется, что ничего (временное перемещение, переключение, ...) не работает. Я даже пытался экспортировать в другую папку, а затем вносить свои изменения, а затем «каким-то образом» слить ее, но единственным результатом было множество ошибок, большинство из которых жаловались на несоответствие репозиториев. Но, возможно, я пропустил некоторые детали :).

Итак, любые идеи, как использовать всегда актуальную бесплатную библиотеку с открытым исходным кодом и управлять собственными настройками? Я не рассматриваю сохранение только .patch-файлов в моем репо в качестве опции;).

ответ

3

В то время как вы не можете разветвляться между репозиториями точно, вы можете импортировать код в свой собственный репозиторий, а затем выполнить merges between repositories. (Связанная почта подразумевает, что есть проблемы с этой функцией, но я считаю, что она полностью поддерживается в последних выпусках SVN. SVN 1.6.1 имеет bug fix, связанный с этим сценарием.)

В книге SVN описывается более общая стратегия, которая не использует слияние кросс-хранилища. Он также работает, если сторонний код вообще не живет в репозитории SVN. См. Раздел Vendor Branches.

1

Проверьте поршень, он делает именно то, что вы хотите с легкостью.

http://piston.rubyforge.org/

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

0

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