2011-06-06 24 views
57

Tôi đang cố gắng hợp nhất các thay đổi mới nhất từ ​​thân cây thành một nhánh của dự án của tôi, nhưng vấn đề là tôi không biết sửa đổi của thân cây mà tôi đã kiểm tra đã tạo chi nhánh từ. Tôi nghĩ SVN sẽ đăng nhập ở đâu đó. Có ai biết làm thế nào tôi có thể tìm thấy số sửa đổi?Tìm sửa đổi trong thân cây mà một chi nhánh được tạo ra từ

+0

Nếu bạn đang sử dụng svn 1.5 hoặc mới hơn, bạn không cần phải biết số sửa đổi này để thực hiện hợp nhất. 'svn merge ^/trunk .' sẽ tự tìm ra. Nếu điều đó không xảy ra, bạn có thể phải 'svnadmin upgrade' kho lưu trữ của bạn. – slowdog

+0

Hmmm ... Subclipse yêu cầu sửa đổi bắt đầu, tôi sẽ phải xem nếu nó có thể làm một hợp nhất theo cách này – Andy

Trả lời

67

Từ dòng lệnh, các --stop-on-bản sao lá cờ có thể được sử dụng để giúp hiển thị cho bạn nơi bạn đã sao chép một chi nhánh từ:

svn log --verbose --stop-on-copy $REPOSITORY/branches/feature 

Dòng cuối cùng của sẽ nói điều gì đó như thế này:

Changed paths: 
    A /branches/feature (from /trunk:1234) 
+0

ahh man. Tôi ước có một tùy chọn "dừng trên N bản sao"! sẽ phải di chuyển chúng theo cách thủ công. cảm ơn! – Andy

+0

Tôi nghĩ rằng một động thái svn sẽ được chọn như là một "bản sao" ... vì nó là một bản sao và xóa trong một shot. Vì vậy, nếu bạn tạo một chi nhánh, và sau đó đổi tên nó (đổi tên như trong lệnh rùa để đổi tên), nó sẽ ném ra "khi nào chi nhánh này bắt đầu?" dữ liệu. Tôi chỉ đề cập đến điều này bởi vì "đổi tên" không âm thanh như "tạo ra" ...... thật đáng buồn tôi đã học được điều này một cách khó khăn. – granadaCoder

12

Bạn đang sử dụng TortoiseSvn hoặc dòng lệnh?

Dòng lệnh: svn log --stop-on-copy và sau đó xem số vòng quay nhỏ nhất.

Rùa SVN: right-click, tortoise-svn, show log, make sure 'stop on copy' is *checked* and press refresh. Scroll to the bottom and find the smallest rev number. enter image description here

+0

thực sự tôi đã sử dụng Subclipse – Andy

+1

Không hoàn toàn chính xác. Khi tạo một chi nhánh, bạn có thể chỉ định phiên bản nào mà chi nhánh dựa trên (sử dụng -r) - ví dụ. 'svn copy -r 1234 svn: //foo.com/trunk svn: // foo.com/branch/b1'. Bản sửa đổi cơ sở không nhất thiết giống như bản sửa đổi đã được tạo ra. @ richq của câu trả lời cho thấy làm thế nào để có được nó một cách chính xác. – harmic

2

Nếu bạn đã sử dụng để tạo ra một svn copytag/branch, sau đó svn log có thể cho bạn biết từ nơi cụ của bạn trong chi nhánh đã được sao chép. Ví dụ: giả sử chúng tôi có svn://svn/trunk/foo và chúng tôi đã tạo chi nhánh svn://svn/branches/super_foo. Chạy svn log -v svn://svn/branches/super_foo, nó sẽ cho bạn biết một cái gì đó như thế này - /branches/super_foo from /trunk/foo:22890, có nghĩa là bạn đã sao chép bản sửa đổi 22890 của thân cây vào chi nhánh của bạn.

0

Đối với ứng dụng Nền tảng, để xem vị trí của thẻ hoặc chi nhánh, hãy tìm dòng thời gian.

9

Có lẽ hơi muộn nhưng.

Nếu bạn hiện đang ở chi nhánh bạn có thể chạy:

svn log -r 1:HEAD --limit 1 --stop-on-copy 

Nó hiển thị các phiên bản đầu tiên của chi nhánh ví dụ: khi bạn tạo ra nó.

+0

Đây là câu trả lời đúng. Nó không liệt kê hàng ngàn bản sửa đổi vô ích, chỉ để nhìn vào cái cuối cùng. – bobbogo

+1

Tôi muốn đề xuất thêm tùy chọn '-v' vào lệnh trên để bạn cũng có thể nhận được thông báo' (từ đường dẫn: rev) '. –

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