SVN: ветка репозитория только для чтения? - PullRequest
0 голосов
/ 16 февраля 2012

У меня есть доступ к SVN-репозиторию только для чтения определенного проекта.

Я хочу расширить этот проект своими собственными изменениями / дополнениями. Если бы у меня был полный доступ к этому репо, я мог бы просто сделать свою собственную ветку разработки. Однако я не имею (и не получу права на запись).

Я бы хотел, чтобы мои модификации хранились в (внутреннем) хранилище, чтобы я мог отслеживать свои собственные разработки.

Можно ли создать конструкцию с использованием SVN, которая может справиться с этим?

Изначально я думал о создании (внутреннего) SVN-репозитория со структурой, как показано ниже:

  • багажник

    • содержащий копию внешнего репо с использованием svn: externals
  • филиал

    • моя ветка разработки, основанная на стволе

Однако я быстро обнаружил, что не просто (если не невозможно?) Создать ветку, основанную на «внешней» папке. Я также хочу иметь возможность объединить изменения во внешнем репозитории с моей собственной веткой разработки. Я также сомневаюсь, возможно ли это с помощью этой конструкции.

Можно ли заставить эту конструкцию работать? Или я должен иметь дело с этим совершенно по-другому? Любой совет по этому вопросу с благодарностью.

спасибо

питер

Ответы [ 3 ]

1 голос
/ 16 февраля 2012

Вы допустили небольшую ошибку в «Кто, где»

  • У вас есть поставщик филиал (svn: external) без peg-ревизии
  • Ваша собственная разработка происходит в транке (изначально создается как svn-копия вендора-филиала)

Время от времени вы сливаетесь из филиала (vendor-branch) в транк

Этот метод имеет некоторые ограничения для больших и сложных апстрим-проектов, но работает для небольших | средних размеров

0 голосов
/ 16 февраля 2012

Лично я бы тоже использовал svn: externals, но я бы настроил свой репозиторий по-другому

repo/trunk/src/mycode
repo/trunk/src/theircode
repo/branch/1.1/src/mycode
repo/branch/1.1/src/theircode

(и т. Д.)

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

Если вы должны «исправить» ихкод, поместите это в ветку «ваш код» и расширьте вашу систему сборки, чтобы скопировать их код в область «исходников» сборки.Затем примените свои патчи.Не изменяйте их код на месте, он требует проблем на многих уровнях, включая множество уровней, которые не очевидны, пока не станет слишком поздно.

0 голосов
/ 16 февраля 2012

Можно ли создать конструкцию с использованием SVN, которая может иметь дело с это? * * 1002

Да, вы можете. В качестве одного из вариантов можно дублировать удаленный репозиторий, используя svnsync . Но Я бы не рекомендовал делать это , потому что у вас возникнут проблемы, когда вы попытаетесь объединить изменения в вашем локальном и удаленном репозиториях.

Кажется, ваш случай идеально подходит для использования git-svn. Это позволит использовать ваш локальный репозиторий для ваших собственных модификаций / дополнений. Дело в том, что вы сможете отслеживать свои собственные разработки с помощью локального репо git (делать пуш-апы) и получать изменения (делать обновления) из удаленного репо svn, когда вам это нужно. Но, конечно, вы все равно не сможете зафиксировать удаленное svn репо, потому что оно имеет доступ только для чтения.

Вот краткий учебник по git-svn.

...