2012-06-13 3 views
6

Я установил git и svn с доморощенным на моем mac running 10.7.4. На моей машине есть версия svn в /usr/bin, которая выглядит как версия, которую использует git svn.Как git решить, какую версию svn использовать в git-svn?

$ git --version 
git version 1.7.10.4 

$ svn --version 
svn, version 1.7.5 (r1336830) 

$ git svn --version 
git-svn version 1.7.10.4 (svn 1.6.17) 

$ /usr/bin/svn --version 
svn, version 1.6.17 (r1128011) 

Итак, могу ли я изменить версию svn, которую использует git-svn? Если да, то как мне это сделать?

Спасибо за чтение.

--Updated для comment--

$ which git svn 
/usr/local/bin/git 
/usr/local/bin/svn 

$ echo $PATH 
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin:/usr/local/git/bin 
+1

Что такое вывод 'which svn', и что в вашем' PATH' – Daenyth

ответ

7

Я немного поработал, и похоже, что git-svn использует перекрестные привязки subversion. После небольшого эксперимента я обнаружил, что исправлена ​​проблема установки обновленной версии svn с включенным perl. В Mac OSX, это бы что-то вроде этого:

# First, I had to take ownership of the perl libs dir, 
# so homebrew could create perl modules 
chown $USER -R /Library/Perl/5.12/darwin-thread-multi-2level 

# Then, remove and reinstall Subversion, but add the perl option: 
brew remove svn 
brew install --perl svn 

# Lastly, reinstall git (this may be optional, but it may also help.) 
brew remove git 
brew install git 

Вашей задача сводится к простому факту, что ваши обновленные установки Subversion не включают сопутствующие модули Перла, так ГИТ-SVN падало обратно на более полная установка системы.

Для справки, символическая ссылка/usr/bin/svn на/usr/local/bin/svn сделала абсолютно ничего хорошего. Это не имеет никакого отношения к $PATH или что-то еще, и все, что связано с модулями perl.

+0

Я пробовал ваше решение, и git svn -version по-прежнему ссылается на версию System svn, поэтому я переименую '/Library/Developer/CommandLineTools/Library/Perl/5.16/darwin-thread-multi-2level \ SVN' в' SVN- old' и '/ Library/Developer/CommandLineTools/Library/Perl/5.16/darwin-thread-multi-2level \ auto \ SVN' на 'SVN-old' (используйте' sudo') и замените его символической ссылкой из '/usr/local/Cellar/subversion/1.8.8/Library/Perl/ 5.16/darwin-thread-multi-2level/SVN' и '/ usr/local/Cellar/subversion/1.8.8/Library/Perl/5.16/darwin-thread-multi-2level/auto/SVN' соответственно – qsoft

1

Вашей системы имеет две версии Subversion установлено: 1.6.17 в /usr/bin/svn и 1.7.5 в /usr/local/bin/svn. Когда вы запустите svn, он правильно проанализирует ваш $PATH, чтобы забрать его в /usr/local/bin/svn, но git-svn не беспокоит и просто использует версию в /usr/bin.

Имея быстрый взгляд через код, нет ничего в git-svn.pl или Alien-SVN (библиотеках Perl Subversion, что git-svn использует), что явно не укажет на какой-либо конкретную svn двоичного, так что я подозреваю, что это безопасность «особенность», чтобы избежать глядя на ваш пользовательский номер $PATH.

Простой вариант, если у вас есть доступ, заключается в замене /usr/bin/svn на /usr/local/bin/svn; возможно, путем удаления и замены символической ссылкой. В противном случае, я подозреваю, что вам нужно будет выкопать источник git-svn.pl и переписать его, чтобы принять ваш заказ $PATH.

+0

Я пробовал идею symlinking, это не сработало, git-svn все еще удалось использовать svn 1.6.17, что действительно не имеет смысла мне. Хотелось бы, чтобы я знал, как полностью удалить эту версию svn. – lashleigh

0

Для тех, которые достигают здесь с той же проблемой: Теперь GIT имеет возможность использовать версию доморощенного по SVN: (! Я копал долго, прежде чем найти его)

brew install --with-brewed-svn git 

Надежда эта помощь