2008-10-17 38 views
13

Tôi đã duy trì the git mirror của the watir project. Một thời gian một vài tuần trước, chúng tôi đã có ai đó sẵn sàng gửi bản vá git-based đầu tiên của họ. Thật không may, chúng tôi gặp phải một số vấn đề liên quan đến kết thúc dòng (CRLF so với LF, vv) vì tính chất đa nền tảng của dự án.git svn rebase: Dữ liệu chưa đầy đủ: Nguồn Delta kết thúc bất ngờ

Tôi đã thử những gì tôi có thể đặt the autocrlf option (để 'nhập') và thực hiện một số cài đặt lại --hard. Tuy nhiên, một vài ngày sau đó, bản cập nhật hàng ngày (git svn rebase) được phun lỗi này:

Incomplete data: Delta source ended unexpectedly 

Tôi đã thử googling xung quanh cho những việc cần làm, nhưng thậm chí loại bỏ các thiết lập autocrlf trong .git/config đã không giúp đỡ. Tôi lo sợ bản sao làm việc bị hỏng, nhưng tôi hy vọng nó không thể phục hồi được. Rõ ràng, một hành động có thể là chỉ cần nhập lại từ svn và bắt đầu một tấm gương mới, nhưng tôi hy vọng chúng ta không phải làm điều đó, vì gương chiếu sáng hiện tại đã được chia đôi và mọi người đã phát triển mã mới trong nhánh của họ.

Cảm ơn trước vì đã được trợ giúp.

+0

bạn có gặp thêm bất kỳ vấn đề nào không? hiện tại chúng tôi dường như có cùng một vấn đề. (và thực hiện thanh toán git-svn mất 3 ngày qua vì vậy tôi hy vọng tôi có thể tránh điều đó) – pvgoddijn

+0

@pvgoddijn Không xin lỗi, một giải pháp chưa bao giờ thực sự được tìm thấy. Vấn đề đã biến mất bởi vì họ chính thức chuyển đến github và bỏ rơi svn. – Pistos

Trả lời

5

Từ kinh nghiệm cá nhân, git-svn luôn tạo chính xác cùng một khi nhân bản hoặc lấy từ kho svn với cùng tham số (thử: tạo kho lưu trữ giả, sao chép nó với git-svn, thực hiện thêm một số cam kết, clone nó một lần nữa, và lấy trên bản sao đầu tiên, các cam kết kết quả nên có cùng một hash chính xác).

Điều này mang lại cho bạn một tùy chọn thú vị: bạn có thể bắt đầu một gương mới riêng biệt với cùng các tham số và so sánh cả hai để xem chúng phân biệt ở đâu. vấn đề). Nếu chúng giống nhau (hoặc bạn quyết định các cam kết sau khi chúng phân biệt không quan trọng), bạn có thể sử dụng gương mới mà không phá vỡ các nhánh (hoặc phá vỡ ít hơn, nếu bạn quyết định bỏ qua một số cam kết phân tách).

+0

Hàm băm vẫn giữ nguyên, phải không? Vâng, tôi nên biết/nhớ rằng git băm các byte thực của delta delta. Thật không may, tôi có thể chạy vào sự khác biệt về tài khoản của tôi muốn vượt qua CRLF <-> LF vấn đề lần thứ hai xung quanh. Tuy nhiên, tôi sẽ thử nhập lại. Cảm ơn! – Pistos

+0

Được rồi, CesarB, tôi đã cố gắng nhập lại từ nguồn svn bằng cách thực hiện git svn init, đặt autocrlf để nhập, sau đó git svn fetch - nhưng tôi nhận được lỗi rất giống nhau ("delta source ...") ở giữa của tìm nạp. Bất cứ một đề nghị nào khác? – Pistos

+0

Hãy thử mà không chơi với autocrlf ở tất cả, giống như gương ban đầu của bạn. Nếu nó vẫn có lỗi đó, tôi sẽ nghi ngờ đó là svn hoặc git-svn bị hỏng. – CesarB

16

Tôi đã gặp phải vấn đề tương tự khi cố gắng tạo kho lưu trữ git từ kho lưu trữ brlcad svn. Tôi đã giải quyết nó bằng cách thực hiện git svn reset --r XXXXX, trong đó tôi đặt XXXXX là khoảng 50 bản sửa đổi trước khi bản gốc được tạo ra lỗi.

Bước lùi một bản sửa đổi không thành công trong việc giải quyết lỗi. Là một phần của quá trình, tôi nhận được lỗi từ git về HEAD không được xác định. Để giải quyết vấn đề này, tôi đã thực hiện một số git svn find-rev XXXXX để xác định hàm băm tương ứng với bản sửa đổi mà tôi muốn, sau đó kiểm tra git. Sau đó, các lỗi về HEAD đã biến mất và git svn reset -r XXXXX hoạt động.

+2

Cảm ơn rất nhiều. Điều này giúp cho một vấn đề tương tự. Tôi chỉ đặt số sửa đổi cho một bản sửa đổi trước khi sửa đổi hiện tại. – Lei

+0

Cảm ơn, tôi đã gặp vấn đề này trong quá trình tìm nạp và giải quyết nó. – Schwern

+0

Tương tự như vậy, cảm ơn rất nhiều. – Christian

0

tôi đã gặp vấn đề tương tự và giống như trường hợp của Todd, việc sửa đổi trước đó đã khắc phục được sự cố.

Tôi nghĩ giải pháp là chuyển sang hai bước trước khi sửa đổi tệp có vấn đề.

+2

cách xác định tệp có vấn đề? – anony

0

Tôi đã gặp sự cố tương tự. Nó xảy ra khi tôi làm một bản sao một phần của repo svn. Tôi đoán git-svn không thể tìm thấy nguồn gốc của tệp khi thực hiện dcommit. Tôi đã cố định nó bằng cách đảm bảo tôi hoàn toàn được cập nhật (git svn rebase) sau đó sử dụng git svn set-tree để cam kết các thay đổi cụ thể cho subversion. Nếu bạn có nhiều thay đổi để cam kết, điều này có thể là một nỗi đau vì bạn cần phải tự cam kết mỗi thay đổi theo thứ tự nhưng nó hoạt động tốt nếu bạn chỉ có một hoặc hai cam kết để đẩy.

4

Tôi có cùng sự cố với git svn fetch, nhưng cách tiếp cận đặt lại không hiệu quả đối với tôi, có lẽ vì tôi không thực sự biết khi nào tham nhũng xảy ra. Đây là những gì cuối cùng đã làm việc cho tôi. Tôi đã làm một git svn fetch --ignore-paths="/branches/" chạy mà không có lỗi.Sau đó, tôi một lần nữa đã làm git svn fetch của tôi, và thời gian này đã làm việc.

+0

Cách tiếp cận đặt lại không hoạt động đối với tôi, bạn đã làm. Cảm ơn! – yhager

+0

@yhager - bạn được chào đón! –

+0

phương pháp đặt lại không hoạt động cho tôi. Nhưng tôi không muốn bỏ qua các chi nhánh. Tôi nên làm gì? – anony

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