2017-08-03 68 views
7

Câu hỏi của tôi tương tự như Mercurial: List all unmerged branches nhưng đối với SVN, không phải Mercurial.Subversion: Cách nhận danh sách tất cả các chi nhánh đang hoạt động, chưa được nhấn chìm

Tôi cần tìm cách liệt kê tất cả các nhánh hiện đang mở chưa được hợp nhất vào nhánh của tôi (thường là thân cây).

Theo như tôi biết, tính năng tương đương trong Git là git branch --no-mergedgit branch --merged

Để làm rõ, tôi không yêu cầu cho một danh sách Đã hủy sửa đổi, giống như nhiều câu hỏi StackOverflow khác có được hỏi trong quá khứ.

Tôi sẽ chấp nhận bất kỳ giải pháp nào có thể liệt kê tất cả hoạt động các chi nhánh chưa được hợp nhất. Nếu điều này là không thể, sau đó tôi sẽ chấp nhận một câu trả lời liệt kê tất cả hoạt động, hợp nhất các chi nhánh, cho phép tôi làm việc ngược.

Ví dụ, nếu tôi đang trên repo/trunk, và repo có những chi nhánh:

  • repo/branches/b1 chưa được sáp nhập vào thân cây
  • repo/branches/b2 đã được sáp nhập
  • repo/branches/b3 đã bị xóa trong một trước sửa đổi và không được hợp nhất
  • repo/branches/b4 đã bị xóa sau khi được hợp nhất

Giải pháp của bạn phải trả lại b1 hoặc b2, nhưng không được trả lại b3 hoặc b4.

+0

Bạn có thể xác định điều gì làm cho chi nhánh "hoạt động" trong kịch bản của bạn không? Cam kết gần đây? Ít nhất một cam kết vì nó được phân nhánh? –

+0

@PatrickQuirk Một chi nhánh có thể được coi là hoạt động nếu nó có mặt trong bản sửa đổi CHÍNH. – BoffinbraiN

+0

Bạn đã thử tạo một tập lệnh/batch liệt kê tất cả các thư mục trong 'repo/branches /' và sau đó kiểm tra từng thư mục với 'svn mergeinfo' nếu có bất kỳ thứ gì cần được hợp nhất? – royalTS

Trả lời

1

Trước tiên, bạn phải đưa danh sách tất cả các chi nhánh trong phiên bản ĐẦU:

svn list repo/branches/ -r HEAD 

Và sau đó, bạn phải lặp qua kết quả, và kiểm tra mergeinfo. Dưới đây là một kịch bản mà bạn có thể save as file * .bat:

@echo off 

for /f %%b in ('svn list repo/branches -r HEAD') do call :revisions %%b 

exit /b 

:revisions 
for /f %%r in ('svn mergeinfo --show-revs eligible repo/branches/%1 repo/trunk') do (
    echo repo/branches/%1 
    exit /b 
) 

Tôi đang sử dụng một : chương trình con điều chỉnh đây, bởi vì tôi muốn thoát khỏi nó khi tôi thấy các phiên bản đầu tiên có sẵn sáp nhập. Đó là lý do tại sao chương trình này sẽ không in các nhánh trùng lặp.

+0

Lệnh của bạn thực sự sẽ hiển thị tất cả các nhánh trong HEAD. Đó là khá đơn giản để làm. Tuy nhiên, đó không phải là những gì tôi cần. Tôi chỉ muốn thấy một tập con của những nhánh cây đó chưa được sáp nhập vào thân cây. – BoffinbraiN

+0

Tệ của tôi. Tôi đã sửa giải pháp của mình. – Przemek

+0

Thật tuyệt vời! Tôi đã thử nghiệm này trên repo SVN cũ của chúng tôi bằng cách tạo ra một chi nhánh mới (xuất hiện trong danh sách) và sau đó sáp nhập nó vào thân cây (gây ra nó để thả ra khỏi danh sách). Tiếp tục trả lời như vậy và bạn sẽ có rất nhiều đại diện trong thời gian không. :) – BoffinbraiN

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