2009-09-15 32 views
10

Tôi có một kho git-svn trống và đã làm một 'git svn fetch' trên đó.Làm thế nào để cập nhật 'git log' sau khi 'git svn fetch' trên một repo trần?

Chạy 'git log' không hiển thị các cập nhật. Tôi chắc chắn có những cập nhật vì nó hiển thị các tập tin thay đổi sau khi 'git svn fetch' và 'git svn log' cũng hiển thị chúng.

Xin lưu ý rằng tôi cố ý thực hiện điều này một repo trần nên 'git rebase' sẽ không hoạt động. Lệnh thích hợp để nhận các thay đổi được tìm nạp là gì?

Trả lời

8

Hãy thử git log git-svn - Tôi don 't có một repo trần, nhưng tôi đã chỉ chạy git svn fetch, và tiêu chuẩn git log mang lại cho tôi hiện tại (rebased) đăng nhập, nhưng với git-svn arg (đó là chi nhánh khác bên cạnh chủ được xác định bởi git branch -a trong trường hợp của tôi) Tôi nhận được đăng nhập đến lần thứ e Đã sửa đổi

+0

Bạn đã đúng. 'git log' tìm kiếm ref chính, đó là lý do tại sao nó làm việc trên 'git symbolic-ref refs/heads/master refs/remotes/git-svn'. Cảm ơn. – vjangus

+0

Điều này cũng không hoạt động trong git 1.7.5.4 – MDCore

6

Tôi tìm thấy câu trả lời,

git symbolic-ref refs/heads/refs thạc sĩ/điều khiển từ xa/git-svn

Nhờ comments Steven Walter trong http://gsocblog.jsharpe.net/archives/12

+0

Điều này không hoạt động nữa trong git 1.7.5.4 – MDCore

+0

nó hoạt động cho tôi !!! –

17

A git svn fetch thêm một nhánh mới từ xa được gọi là điều khiển từ xa/git-svn (như có thể thấy với git branch -a).

Nếu bạn thực hiện thay đổi đối với svn ngược dòng, sau đó chạy lại git fetch, các thay đổi sẽ được kéo (trên thực tế, được tìm nạp) trong nhánh này, chứ không phải trên máy chủ. Vì vậy, để làm cho git log (và mọi thứ khác) làm việc ok trên nhánh master bạn chỉ cần hợp nhất, như bình thường bạn sẽ phải làm sau khi tìm nạp (đây là những gì git pull làm, tìm nạp và sau đó hợp nhất).

Vì git svn pull không hoạt động, bạn sẽ phải hợp nhất nó theo cách thủ công. Trong khi trên cành chủ, chạy:

git merge remotes/git-svn

này sẽ hợp nhất chi nhánh tổng thể của bạn với các chi nhánh git-svn, làm cho tất cả mọi thứ ok một lần nữa.

Vì vậy, trong tương lai, chạy

git svn fetch 
git merge remotes/git-svn 

và bạn sẽ được cập nhật với các kho thượng nguồn một lần nữa.

Đặt ref của đầu của chủ thành git-svn như đề xuất của vjangus cũng sẽ thực hiện công việc này, nhưng bạn không bao giờ nên thực hiện thay đổi trong nhánh từ xa.

+1

Đây là câu trả lời đúng cách giải quyết tình huống tôi đang gặp phải. – Ian

+0

Ban đầu tôi đã lấy repo svn bằng 'git svn fetch -s --prefix = origin /', vì vậy trong trường hợp của tôi có một nhánh 'remote/origin/trunk' thay vì' git-svn'. Cùng một giải pháp mặc dù. – mcmlxxxvi

Các vấn đề liên quan