Как обновить версию SVN, используемую git -svn - программирование
Подтвердить что ты не робот

Как обновить версию SVN, используемую git -svn

Я использую git -svn и люблю его. Но мы просто переключили наше репо на тот, который требует версии svn 1.5.0 или выше. В настоящее время у меня есть это:

triedsound-lm:android holmesj$ git svn --version
git-svn version 1.7.3.1 (svn 1.4.4)

triedsound-lm:android holmesj$ svn --version
svn, version 1.6.15 (r1038135)
   compiled Nov 29 2010, 13:32:56

Итак, когда я пытаюсь dcommit, я получаю это сообщение об ошибке:

...
...
A repository hook failed: Commit blocked by start-commit hook (exit code 1) with output:
Only clients >= 1.5.0 may commit to this repository.
For upgrade instructions please see:
    http://twiki.corp.yahoo.com/view/Subversion/SubversionFAQ#Upgrade
 at /usr/local/git/libexec/git-core/git-svn line 573

Это действительно отстой, я не хочу останавливать использование git -svn. Это было бы просто ужасно. Это будет сосать, если мне просто нужно выжать все мои git в один большой svn commit.

Кто-нибудь знает, как обновить версию svn, которую использует git -svn? Я запускаю это на OSX 10.5

4b9b3361

Ответ 1

git -svn записывается в perl и использует модуль SVN:: Core, поэтому он использует любую версию библиотеки svn, на которую указывает этот модуль. Чтобы сделать git -svn использовать более новую версию svn, возможно, вы, возможно, обновите системный модуль SVN:: Core... может быть достаточно a sudo cpan SVN::Core. Кроме того, вы можете заменить библиотеки svn в /usr/lib.

Я не могу сделать ничего из вышеперечисленного, так как у меня нет прав администратора на моем рабочем компьютере. Вот что я сделал, чтобы преодолеть это. Если вы пройдете по этому маршруту, вам может потребоваться настроить некоторые из приведенных ниже путей. Я использую ~/local/lib, ~/local/bin и т.д.

Задайте следующие переменные оболочки:

export PERL_MB_OPT="--install_base $HOME/local"
export PERL_MM_OPT="INSTALL_BASE=$HOME/local"

Затем запустите cpan SVN::Core. В какой-то момент он спросит: "Хочешь передать какие-либо аргументы для настройки?", На что я ответил --libdir=/Users/sean/local/lib --prefix=/Users/sean/local. Это создаст новую копию библиотеки svn и привязки perl для нее, которая закончится в ~/local/lib/perl5/.

Теперь, в моей установке git (из источника), git -svn делает это:

use lib (split(/:/, $ENV{GITPERLLIB} || "/Users/sean/local/lib/perl5/site_perl"));

Итак, я перевел мой только что установленный SVN-модуль с ~/local/lib/perl5/ на ~/local/lib/perl5/site_perl. Есть несколько вещей, которые нужно переместить; ваш каталог lib/perl5 должен выглядеть примерно так:

alt text

(Возможно, проще установить GITPERLLIB в $HOME/local/lib/perl5 и переместить Git.pm из site_perl)

Я, очевидно, не perl-гуру, поэтому, вероятно, лучший способ добиться всего этого. Однако я могу подтвердить, что он работает: git-svn version 1.7.3.1 (svn 1.6.12)

Ответ 2

Если вы можете использовать MacPorts, простой port install git-core +svn установит последнюю версию как самого git, так и клиента и библиотек svn.

$ git svn --version
git-svn version 1.7.3.2 (svn 1.6.15)

Ответ 3

Примечание: начиная с git 1.7.8 (конец октября 2012 года), git svn будет работать с SVN1.7.

См. " [ОБЪЯВАТЬ] git v1.8.0-rc3":

"git svn" обновлен для работы с SVN 1.7.

Ответ 4

Одним из способов изменения версии svn, используемой git -svn, является переменная окружения PERL5LIB в соответствующем svn-perl установки svn по вашему выбору в вашей системе. Это нужно сделать, добавив следующую строку в профиль bash:

export PERL5LIB=/usr/local/lib/svn-perl

Путь будет меняться в зависимости от каталога установки svn-perl-привязок. Например, клиент svn WanDisco устанавливает привязки svn-perl по умолчанию и обычно находится под /opt/subversion/lib/svn-perl. С помощью homebrew вы можете запустить следующую команду для установки svn с привязками perl:

$ brew install subversion --perl

Для более старых версий:

$ brew install subversion17 --perl
$ brew install subversion16 --perl

Я узнал о переменной PERL5LIB от здесь.

Ответ 5

Для меня была выполнена следующая последовательность шагов:

  • Получить источник subversion для Apache
  • Создайте subversion из источника, используя make, а затем выполните:
    • make swig-pl
  • Установите subversion, используя make install, а затем выполните:
    • make install-swig-pl
  • Получить git источник
  • Построить git как обычно

Ссылка: http://www.linuxfromscratch.org/blfs/view/cvs/general/subversion.html