Сохраняйте изменения кода в репозитории SVN отдельно, вне репозитория

У меня есть вопрос о том, как лучше всего поддерживать некоторый код.

В онлайн-репозитории SVN размещен проект. Проект активно развивается, поэтому ствол постоянно меняется. У меня также нет доступа для записи к этому репо.

Я внес некоторые изменения в этот проект, которые потребовали изменений во многих модулях проекта. Мои изменения довольно «нишевые», и нет смысла регистрировать их в багажнике. Кроме того, мои изменения будут продолжать развиваться.

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

Есть ли способ сохранить свои изменения отдельно, не зеркалируя весь репозиторий? До сих пор я поддерживал зеркало репо, которое я продолжаю объединять, и это занимает довольно много времени. У меня не было времени, поэтому мои изменения не синхронизировались с последними.

По сути, было бы здорово, если бы кто-то, кто хочет использовать мои изменения, должен был сделать что-то вроде:

  1. Проверьте ствол (или определенный тег) из репозитория SVN.
  2. Проверьте мои последние изменения (или конкретный тег) в одиночку откуда-то
  3. Объедините два, используя какой-нибудь скрипт (который я могу разработать)

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

Я открыт для использования любой системы для поддержания изменений, которые я сделал. Не обязательно SVN или что-то конкретное.


person hide0    schedule 31.05.2012    source источник


Ответы (3)


Вы можете использовать git-svn для клонирования репозитория subversion, а затем поддерживать свой git -svn клон. Если бы вы это сделали, кому-то, кто хочет получить вашу версию/ветвь кода, не потребовался бы трехэтапный процесс, как вы описываете; скорее они просто «клонируют» ваш репозиторий (или указанный вами тег и т. д.).

Вы также можете поддерживать несколько веток ствола репозитория svn или отслеживать несколько веток svn по отдельности и т. д.

person Kylo    schedule 31.05.2012
comment
Спасибо! Я пробовал как этот метод, так и метод @mark-phippard по отдельности, и оба кажутся хорошими. - person hide0; 11.06.2012

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

https://www.google.com/search?q=svn+vendor+branch

По сути, просто создайте свой собственный репозиторий SVN локально и используйте скрипт для сохранения копии нетронутой магистрали в вашем репозитории. Создайте ветку в своем репозитории и зафиксируйте туда свои изменения. Затем просто периодически используйте скрипт для синхронизации ствола в ваших репозиториях с стволом в мастере, а затем объединяйте изменения из этого ствола в свою ветку.

Я предполагаю, что вы также можете использовать git-svn для поддержки git-зеркала ствола, а затем просто использовать ветки git для хранения ваших изменений и их синхронизации.

person Mark Phippard    schedule 31.05.2012
comment
Спасибо! Это действительно ответило на мой вопрос. Я выбрал ответ git выше, потому что я нашел его немного более удобным с git, учитывая мой рабочий процесс, но я хотел бы также отметить это правильно. - person hide0; 11.06.2012

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

person thescientist    schedule 31.05.2012