SVN GIT локальные пользовательские изменения - PullRequest
2 голосов
/ 19 сентября 2011

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

С другой стороны, я хочу перераспределить исходный код (сторонний код и мои изменения) в другие места.Т.е., если есть обновление исправления от стороннего производителя, я хочу просто обновить мой основной репозиторий и перераспределить изменения в другие места.То же самое относится и к некоторым пользовательским обновлениям.

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

Моя идея:

  • обновления от 3-й стороны, использующие SVN, до $ REPODIR
  • $ REPODIR будут моим GIT-репозиторием - все остальные местоположения будут вытягиваться, тогда изменения будут отсюда.
  • Я внесу свои локальные изменения и отправлю их в $ REPODIR

У кого-нибудь есть лучшее решение или он решил подобную проблему другим способом?

1 Ответ

3 голосов
/ 21 сентября 2011

Команда git-svn поможет вам в этом. Я использую его для всех репозиториев SVN, с которыми мне приходится работать, работает как шарм!

Следующие команды должны помочь вам начать:

mkdir svn-checkout

cd svn-checkout

git svn init --stdlayout < your SVN URL >

git svn fetch

Теперь сделайте большой перерыв, загрузка может занять дни (!) В зависимости от количества ревизий, веток и тегов в репозитории SVN. После этого выведите

git gc

и сделайте еще один большой перерыв. Возможно, вы захотите посмотреть потребление памяти.

Хорошей новостью является то, что настройку необходимо выполнить только один раз. После этого весь репозиторий находится на вашем локальном компьютере - diff, log и аннотирование могут выполняться без вмешательства SVN-сервера.

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

git svn rebase

Результатом является git-репо с текущим состоянием SVN плюс ваши изменения. Возможно, вам придется разрешать конфликты, вызванные вашими изменениями.

См. http://justaddwater.dk/2009/03/09/using-git-for-svn-repositories-workflow/ для более подробного объяснения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...