Quay lại các thay đổi xấu với svn trong Eclipse


81

Giả sử tôi đã thực hiện một số thay đổi xấu đối với kho Subversion. Sau đó, tôi cam kết những thay đổi tốt mà tôi muốn giữ lại.

Cách dễ nhất để khôi phục những thay đổi xấu đó trong Eclipse và giữ lại những thay đổi tốt là gì? Giả sử rằng các tệp liên quan đến các thay đổi xấu không giống với các tệp liên quan đến các thay đổi tốt. Mọi thứ thay đổi như thế nào nếu các thay đổi tốt được thực hiện đối với các tệp giống như các thay đổi xấu?

Tôi chủ yếu đang tìm cách thực hiện việc này thông qua các plugin Eclipse (Subclipse hoặc Subversive) nhưng các lệnh dòng lệnh cũng rất thú vị.

Câu trả lời:


30

Bạn có hai lựa chọn để làm điều này.

Quick and Dirty đang chọn tệp của bạn (sử dụng ctrl) trong dạng xem Project Explorer, bấm chuột phải vào chúng, chọn Replace with...và sau đó bạn chọn tùy chọn tốt nhất cho mình, từ Latest from Repositoryhoặc một số Branchphiên bản. Sau khi nhận được những tệp đó, bạn sửa đổi chúng (với một khoảng trống hoặc sửa điều gì đó, cuộc gọi của bạn và cam kết chúng tạo một bản sửa đổi mới hơn.

Một cách rõ ràng hơn là chọn Mergeở menu nhóm và điều hướng qua trình hướng dẫn sẽ giúp bạn khôi phục phiên bản cũ trong bản sửa đổi thực tế.

Cả hai lệnh đều có dòng lệnh tương đương: svn revertsvn merge.


1
Mới nhất từ ​​Kho lưu trữ là bản đăng nhập sai, vì vậy tôi không thấy nó hữu ích ở đâu. Ngoài ra, nhật thực không muốn giúp bạn giải quyết vấn đề này vì chỉ có tùy chọn đề cập khả dụng nếu bạn chọn nhiều tệp (có thể vì phiên bản trễ của chúng khác nhau).
Macilias

79

Trong Eclipse Ganymede (Nhật thực)

Chọn dự án / tệp có thay đổi xấu, và từ menu bật lên, hãy chọn:

Nhóm -> Hiển thị lịch sử

Các bản sửa đổi liên quan đến dự án / tệp đó sẽ được hiển thị trong tab Lịch sử.

Tìm bản sửa đổi nơi "các thay đổi xấu" được thực hiện và từ menu bật lên, hãy chọn:

Hoàn nguyên các thay đổi từ Bản sửa đổi X

Điều này sẽ hợp nhất các thay đổi trong (các) tệp được sửa đổi trong bản sửa đổi xấu, với bản sửa đổi trước bản sửa đổi xấu.

Có hai tình huống từ đây:

  1. Nếu bạn cam kết không có thay đổi nào cho tệp đó (bản sửa đổi không hợp lệ là bản sửa đổi cuối cùng cho tệp đó), nó sẽ chỉ xóa các thay đổi được thực hiện trong bản sửa đổi xấu. Những thay đổi đó được hợp nhất vào bản sao làm việc của bạn, vì vậy bạn phải cam kết chúng.

  2. Nếu bạn đã cam kết một số thay đổi cho tệp đó (bản sửa đổi không hợp lệ không phải là bản sửa đổi cuối cùng cho tệp đó), bạn sẽ phải giải quyết xung đột theo cách thủ công. Giả sử rằng bạn có tệp readme.txt và số bản sửa đổi không hợp lệ là 33. Ngoài ra, bạn đã thực hiện một cam kết khác cho tệp đó trong bản sửa đổi 34. Sau khi bạn chọn Hoàn nguyên Thay đổi từ Bản sửa đổi 33, bạn sẽ có những điều sau trong bản sao làm việc của mình:

readme.txt.merge-left.r33 - bản sửa đổi không hợp lệ

readme.txt.merge-right.r32 - trước khi sửa đổi sai

readme.txt.working - phiên bản sao chép hoạt động (giống như trong r34 nếu bạn không có bất kỳ thay đổi nào chưa được cam kết)

Readme.txt gốc sẽ được đánh dấu là xung đột và sẽ chứa phiên bản đã hợp nhất (nơi các thay đổi từ bản sửa đổi không hợp lệ bị xóa) với một số điểm đánh dấu (<<<<<<<. Hoạt động, v.v.). Nếu bạn chỉ muốn xóa các thay đổi khỏi bản sửa đổi xấu và giữ các thay đổi được thực hiện sau đó, thì tất cả những gì bạn phải làm là xóa các điểm đánh dấu. Nếu không, bạn có thể sao chép nội dung từ một trong 3 tệp nêu trên sang tệp gốc. Dù bạn chọn gì, khi bạn hoàn thành, hãy đánh dấu xung đột được giải quyết bằng

Nhóm - Đánh dấu đã giải quyết

Các tệp tạm thời sẽ bị xóa và tệp của bạn sẽ được đánh dấu là đã thay đổi. Như trong 1, bạn phải cam kết các thay đổi.

Lưu ý rằng điều này không xóa sửa đổi khỏi lịch sử sửa đổi trong kho lưu trữ svn. Bạn chỉ cần thực hiện bản sửa đổi mới trong đó các thay đổi từ bản sửa đổi không hợp lệ sẽ bị xóa.


14

Nếu bạn muốn thực hiện từng tệp một, bạn có thể đi tới dạng xem Lịch sử cho tệp giả sử bạn đã cài đặt plugin Eclipse SVN. "Nhóm-> Hiển thị lịch sử"

Trong chế độ xem Lịch sử, tìm phiên bản tốt cuối cùng của tệp đó, nhấp chuột phải và chọn "Lấy nội dung". Điều này sẽ thay thế phiên bản hiện tại của bạn bằng nội dung của phiên bản đó. Sau đó, bạn có thể thực hiện các thay đổi khi đã sửa xong.


6

Trong Eclipse sử dụng Subversive:

Nhấp chuột phải vào dự án của bạn> Nhóm> Hợp nhất

Trong cửa sổ hợp nhất, hãy chọn các bản sửa đổi bạn muốn hoàn nguyên như bình thường nhưng cũng bật hộp kiểm "Hợp nhất đã đảo ngược".

Hợp nhất như bình thường.



1

Svnbook có một phần về cách Subversion cho phép bạn hoàn nguyên các thay đổi từ một bản sửa đổi cụ thể mà không ảnh hưởng đến những thay đổi đã xảy ra trong các bản sửa đổi tiếp theo:

http://svnbook.red-bean.com/en/1.4/svn.branchmerge.commonuses.html#svn.branchmerge.commonuses.undo

Tôi không sử dụng Eclipse nhiều, nhưng trong TortoiseSVN, bạn có thể làm điều này từ hộp thoại từ nhật ký; chỉ cần nhấp chuột phải vào bản sửa đổi bạn muốn hoàn nguyên và chọn "Hoàn nguyên các thay đổi từ bản sửa đổi này".

Trong trường hợp các tệp mà bạn muốn hoàn nguyên "các thay đổi xấu" có "các thay đổi tốt" trong các bản sửa đổi tiếp theo, thì quá trình này cũng giống như vậy. Các thay đổi từ bản sửa đổi "xấu" sẽ được hoàn nguyên, không ảnh hưởng đến các thay đổi từ bản sửa đổi "tốt", tuy nhiên bạn có thể gặp xung đột.


0

Tôi gặp vấn đề tương tự nhưng tùy chọn nhật thực CleanUp không hoạt động với tôi.

1) cài đặt TortoiseSVN
2) Đi tới windows explorer và nhấp chuột phải vào thư mục dự án của bạn
3 Lựa chọn tùy chọn CleanUp (bằng cách chọn tùy chọn khóa ngắt)

Nó hoạt động.

Hy vọng điều này sẽ giúp ai đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.