Làm thế nào để xem những gì sẽ được cập nhật từ kho lưu trữ trước khi ban hành lệnh Cập nhật svn của svn?


115

Tôi đã cam kết thay đổi nhiều tệp thành kho lưu trữ SVN từ Eclipse.

Sau đó tôi đi đến thư mục trang web trên hộp linux nơi tôi muốn cập nhật những thay đổi này từ kho lưu trữ sang thư mục đó.

Tôi muốn nói "svn update project100" sẽ cập nhật các thư mục trong "project100" với tất cả các tệp được thêm và thay đổi của tôi, v.v.

TUY NHIÊN, tôi không nhất thiết muốn cập nhật những thay đổi mà tôi đã không thực hiện. Vì vậy, tôi nghĩ rằng tôi có thể nói "svn status project100" nhưng khi tôi làm điều này, tôi nhận được một danh sách thay đổi hoàn toàn khác sẽ được thực hiện, không ai trong số tôi nằm trong danh sách, đó là số lẻ.

Do đó để chắc chắn rằng chỉ những thay đổi của tôi được cập nhật vào thư mục web, tôi buộc phải điều hướng đến mọi thư mục mà tôi biết có một thay đổi mà tôi đã thực hiện và chỉ cập nhật rõ ràng những tệp đó, ví dụ: "svn update newfile1.php", v.v. đó là tẻ nhạt.

Bất cứ ai cũng có thể làm sáng tỏ quy trình làm việc tiêu chuẩn ở đây, cụ thể là làm thế nào để tôi có được một danh sách chính xác về tất cả các thay đổi sắp được thực hiện trước khi tôi thực hiện lệnh "cập nhật svn"? Tôi nghĩ đó là lệnh "trạng thái".

Câu trả lời:


167

Thử:

svn status --show-updates

hoặc (giống nhau nhưng ngắn hơn):

svn status -u

9
hoặc ngắn hơn: svn st -u
Kenyakorn Ketsombut

Ý nghĩa của X trong đầu ra là gì?
IgorGanapolsky

1
Ngoài ra, sử dụng: svn status -q -u... Chỉ hiển thị các thay đổi cập nhật và thay đổi cục bộ liên quan đến các tệp thuộc kho lưu trữ. Bạn không nhận được dấu chấm hỏi (?) Từ các tệp không lưu trữ.
sẽ vào

56

Tùy thuộc vào những gì bạn muốn biết giữa bản sao làm việc của bạn và kho lưu trữ máy chủ svn mới nhất, mà không cập nhật bản sao làm việc cục bộ của bạn, đây là những gì bạn có thể làm:

nếu bạn muốn biết những gì đã được thay đổi trong kho lưu trữ của máy chủ svn, hãy chạy lệnh:

$ svn st -u

nếu bạn muốn biết liệu cùng một tệp đã được sửa đổi cả trong bản sao làm việc cục bộ của bạn và trong kho lưu trữ của máy chủ svn, hãy chạy lệnh:

$ svn st -u | grep -E '^M {7}\*'

nếu bạn muốn nhận danh sách các tệp đã thay đổi giữa một sửa đổi cụ thể và CHÍNH, hãy chạy lệnh:

$ svn diff -r revisionNumber:HEAD --summarize

nếu bạn muốn nhận được một danh sách các tập tin thay đổi giữa các phiên bản paticular, hãy chạy lệnh:

$ svn diff -r revisionNumber:anotherRevisionNumber --summarize

nếu bạn muốn xem những gì sẽ được cập nhật (mà không thực sự cập nhật), hãy chạy lệnh:

$ svn merge --dry-run -r BASE:HEAD .

nếu bạn muốn biết nội dung của một tệp cụ thể đã được thay đổi trong kho lưu trữ của máy chủ svn so với bản sao làm việc của bạn, hãy chạy lệnh:

$ svn diff -r BASE:HEAD ./pathToYour/file

nếu bạn muốn biết nội dung của tất cả các tệp đã được thay đổi trong kho lưu trữ của máy chủ svn so với bản sao làm việc của bạn, hãy chạy lệnh:

$ svn diff -r BASE:HEAD .

43

Bạn có thể xem những gì sẽ cập nhật (mà không thực sự cập nhật) bằng cách phát hành:

svn merge --dry-run -r BASE:HEAD .

Thêm chi tiết tại đây .


Ở trên không làm việc cho tôi, đã phải chạysvn merge --dry-run --revision BASE:HEAD .
Znarkus

3
Bắt "svn: E195020: Không thể hợp nhất thành bản sao làm việc sửa đổi hỗn hợp [16032: 16061]; hãy thử cập nhật trước"
Hubert Grzeskowiak

Câu trả lời tuyệt vời - quá tệ, nó không hoạt động trên các bản sao làm việc sửa đổi hỗn hợp .. Điều đó sẽ học cho tôi
Gerard ONeill

2
@HubertGrzeskowiak - Tôi yêu sự trớ trêu q: how do I ... without doing an update?a: first, do an update, then ...:) :) :)
Jesse Chisholm

17

Đây là những gì tôi đang tìm kiếm. Đã kiểm tra Google trước, nhưng svn helpcuối cùng tôi cũng tìm được :)

svn diff -r BASE:HEAD .

14

Tương tự nhưng ngắn hơn ngắn hơn :):

svn st -u

0

Bạn có thể sử dụng 'svn diff' để xem sự khác biệt giữa bản sao làm việc của bạn và kho lưu trữ.


9
Sai lầm. Những người sẽ chỉ liệt kê sự khác biệt giữa bạn và lần cuối cùng bạn đồng bộ hóa với kho lưu trữ. Trong khi đó, bạn sẽ không thấy bất kỳ sự khác biệt nào mà người khác đã cam kết với kho lưu trữ. OP muốn biết những gì những thay đổi đó, mà không áp dụng chúng thông qua mộtsvn update
dland

@Andrew có nghĩa là đề xuất rằng OP chạy 'svn diff -r Head URL' để thấy sự khác biệt từ các tệp đã kiểm tra với những gì được kiểm tra là phiên bản CHÍNH hoặc phiên bản hàng đầu trong kho lưu trữ.
Mac

0

Về lý thuyết, bạn có thể thực hiện tất cả các thay đổi của mình trong một nhánh mà bạn đã tạo để sử dụng cho riêng mình. Sau đó, bạn sẽ chắc chắn chắc chắn rằng bạn là người duy nhất cam kết với nó.

Phát triển tính năng IMHO nên được thực hiện như thế này.

Sau đó, bạn có thể cập nhật máy mục tiêu này từ chi nhánh này thay vì từ thân cây.

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.