2012-06-13 21 views
6

Tôi đã cài đặt gitsvn với homebrew trên máy Mac chạy 10.7.4. Có phiên bản svn trên máy của tôi ở /usr/bin dường như là phiên bản git svn đang sử dụng.Làm thế nào để git quyết định phiên bản nào của svn để sử dụng trong 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) 

Vì vậy, tôi có thể thay đổi phiên bản svn mà git-svn sử dụng không? Nếu vậy, làm thế nào để tôi đi về nó?

Cảm ơn bạn đã đọc.

--Updated cho 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

Đầu ra của 'svn' là gì, và cái gì trong' PATH' – Daenyth

Trả lời

7

Tôi đã đào một chút và có vẻ như git-svn sử dụng các ràng buộc perl của subversion. Sau một thử nghiệm nhỏ, tôi thấy rằng việc cài đặt phiên bản nâng cấp của svn với perl được bật đã khắc phục được sự cố. Trên Mac OSX, điều này sẽ đi một cái gì đó như thế này:

# 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 

Vấn đề của bạn nắm để thực tế đơn giản rằng cài đặt Subversion cập nhật của bạn không bao gồm các module perl đi kèm, vì vậy git-svn đã rơi trở lại vào càng hoàn thành cài đặt hệ thống.

Để lưu nội dung, liên kết tượng trưng/usr/bin/svn đến/usr/local/bin/svn hoàn toàn không tốt. Điều này không liên quan gì với $PATH hoặc bất kỳ thứ gì khác và mọi thứ cần làm với các mô-đun perl.

+0

Tôi đã thử giải pháp của bạn và git svn --version vẫn đề cập đến phiên bản svn hệ thống, vì vậy tôi đổi tên '/Library/Developer/CommandLineTools/Library/Perl/5.16/darwin-thread-multi-2level \ SVN' thành' SVN- old' và '/ Library/Developer/CommandLineTools/Library/Perl/5.16/darwin-thread-multi-2level \ auto \ SVN' đến 'SVN-old' (sử dụng' sudo') và thay thế nó bằng symlink từ '/usr/local/Cellar/subversion/1.8.8/Library/Perl/ 5.16/darwin-thread-multi-2level/SVN' và '/ usr/local/Cellar/subversion/1.8.8/Thư viện/Perl/5.16/darwin-thread-multi-2level/auto/SVN' tương ứng – qsoft

1

Hệ thống của bạn có hai phiên bản của Subversion cài đặt: 1.6.17 trong /usr/bin/svn, và 1.7.5 trong /usr/local/bin/svn. Khi bạn chạy svn, nó phân tích cú pháp của bạn $PATH chính xác để chọn số trong /usr/local/bin/svn, nhưng git-svn không làm phiền và chỉ sử dụng phiên bản trong /usr/bin.

Xem lướt qua mã, không có gì trong git-svn.pl hoặc Alien-SVN (thư viện Perl Subversion mà sử dụng git-svn) rõ ràng trỏ đến bất kỳ số nhị phân cụ thể svn nào, vì vậy tôi nghi ngờ đó là tính năng bảo mật xem tùy chỉnh $PATH của bạn.

Tùy chọn dễ dàng, nếu bạn có quyền truy cập, là thay thế /usr/bin/svn bằng /usr/local/bin/svn; có thể bằng cách xóa và thay thế bằng một liên kết tượng trưng. Nếu không, tôi nghi ngờ bạn sẽ cần phải đào sâu vào nguồn của git-svn.pl và viết lại nó để chấp nhận tùy chỉnh $PATH của bạn.

+0

Tôi đã thử ý tưởng liên kết, nó không hoạt động, git-svn vẫn quản lý để sử dụng svn 1.6.17, điều này thực sự không có ý nghĩa với tôi. Tôi muốn tôi biết làm thế nào để gỡ bỏ cài đặt phiên bản của svn hoàn toàn. – lashleigh

0

Đối với những người mà đạt được ở đây với cùng một vấn đề: Bây giờ GIT có một tùy chọn để sử dụng phiên bản của Homebrew của SVN: (! Tôi đào thời gian dài trước khi tìm nó)

brew install --with-brewed-svn git 

Hope trợ giúp này