Subversion SVN: внешний файл переопределить? - PullRequest
3 голосов
/ 20 сентября 2010

У меня есть хранилище для одного из моих проектов, у которого есть вложенное хранилище, использующее свойство svn:externals для обновления файлов из внешней библиотеки.Проблема в том, что мне нужно закомментировать одно из объявлений функций одного из заголовков в этой библиотеке и перенести измененный заголовок с корневым репозиторием.так что когда библиотека обновляется, она переопределяет этот конкретный файл моей версией?

Ответы [ 2 ]

7 голосов
/ 24 сентября 2010

То, что вы хотите, звучит для меня как сценарий "ветки поставщика".

текущий репозиторий

root
|-- myproject
    |
    -- mycode
    |
    -- library -> svn:externals to a remote svn or your own libraryproject

рекомендуемый репозиторий

root
|-- myproject
    |
    -- mycode
    |
    -- library -> copied/branched from ^/vendor/library/current (modified at this location as much as you like)

|
-- vendor
   |
   --library
     |
     --current
     |
     --imported-version-1.0
     |
     --imported-version-1.1

Как создать макет

Создать ^ / vendor / library / current и СКАЧАТЬ в него исходный неизмененный код библиотеки.

svn commit ^/vendor/library/current
svn cp ^/vendor/library/current ^/vendor/library/imported-version-1.0 (tag the import)
svn cp ^/vendor/library/current ^/myproject/library (branch the code into your project)

изменить ^ / myproject / library и зафиксировать


Как обновить библиотеку без потери ваших изменений

Загрузить последний оригинальный выпускбиблиотеки в ^ / vendor / library / current OVERWRITING файлы.

svn commit ^/vendor/library/current (checks in the difference between the two library releases)
svn cp ^/vendor/library/current ^/vendor/library/imported-version-1.1 (tag the change)
cd /your-local-workspace/myproject/library (will be merge target)
svn merge ^/vendor/library/current (get all CHANGES from the upstream branch and apply them to your modified library)
svn commit

прибыль


Вместо того, чтобы переносить «current» непосредственно в ваш проект, вы можете перейти к «my-modified-libs "и используйте его через внешние.Это рекомендуется, если у вас есть несколько проектов, которым требуется одна и та же измененная версия библиотеки.

Имейте в виду, что у филиалов поставщиков будут проблемы, связанные с переименованием и удалением, поскольку они не могут быть отслежены перезаписью.Кросс-репозиторийное слияние - это другая и довольно молодая тема для SVN.

Если вы попробуете, сообщите нам, как это произошло:)

Кристоф

0 голосов
/ 21 сентября 2010

Нет встроенной функции, которая бы помогла вам в этом.

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

...