2011-01-14 25 views
5

Gần đây chúng tôi đã chuyển máy chủ SVN của chúng tôi từ một trung tâm dữ liệu sang một trung tâm dữ liệu khác và IP của máy chủ đã thay đổi. Tôi đã sử dụng svn switch --relocate old_url new_url để cập nhật bản sao làm việc thực tế của mình và điều đó thật vui.git-svn sau khi kho lưu trữ SVN được di chuyển?

Tuy nhiên, tôi làm hầu hết công việc của mình trong phiên bản git cục bộ của kho lưu trữ (sử dụng git-svn, rõ ràng). Sau khi di chuyển máy chủ SVN, tôi cập nhật các URL cho repo trong .git/config, nhưng khi tôi cố gắng sử dụng dcommit, tôi nhận được lỗi này:

Unable to determine upstream SVN information from HEAD history. 
Perhaps the repository is empty. at /home/me/libexec/git-core/git-svn line 520. 

tôi thiếu gì?

Trả lời

4

Nói chung, đây không phải là điều mà git-svn hỗ trợ trực tiếp. Trở ngại lớn nhất là git-svn sử dụng "git-svn-id" (hiển thị trong nhật ký cam kết cho mỗi cam kết) để nhận dạng duy nhất các cam kết từ SVN - và URL SVN là một phần của ID này. Nếu URL thay đổi, nó sẽ vô hiệu hóa tất cả lịch sử hiện tại của bạn.

Có cách giải quyết khác được mô tả here trông giống như chúng hoạt động, nhưng chúng không chính xác đơn giản và tôi chưa thử bất kỳ cách nào trong số chúng.

+0

Cảm ơn. Tôi đã sợ rằng đây là trường hợp, nhưng tôi không quá lo lắng về việc mất việc. Tôi luôn có thể kéo các nhánh của mình sau khi nhập lại SVN. – codekoala

+1

Tôi đã thử cách khắc phục được mô tả trong liên kết tại [GitSvnSwitch] (https://git.wiki.kernel.org/index.php/GitSvnSwitch) và nó đã làm việc cho tôi. – ldav1s

+0

Có, sử dụng cùng một 'url' và' rewriteRoot' trong '.git/config' của tôi đã thực hiện thủ thuật cho tôi! Tuyệt diệu! – codekoala

0

Có thể thực hiện việc này bằng git-svn bằng cách sao chép cả hai bản repo, hợp nhất chúng, sau đó tạo lại siêu dữ liệu git-svn.

Xem câu trả lời của tôi here.

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