Sử dụng dòng lệnh, tôi muốn xem tất cả các thay đổi được thực hiện bởi một người dùng cụ thể. Điều này có thể không? Tôi đã xem tài liệu cho svn log
nhưng không thể xem cách thực hiện việc này.Tôi làm cách nào để tìm các bản sửa đổi được thực hiện bởi một người dùng Subversion cụ thể?
Trả lời
Tôi không biết cách nào để thực hiện việc này bằng Subversion thuần túy. Nhưng bạn có thể làm điều đó with sed
:
svn log | sed -n '/username/,/-----$/ p'
này thấy mỗi trường hợp của tên người dùng, và sau đó tất cả mọi thứ in lên đến dòng tiêu tan mà đánh dấu sự kết thúc của một kỷ lục trong nhật ký.
Mẫu tìm kiếm rất linh hoạt - bạn có thể dễ dàng sửa đổi nó để tìm kiếm những thứ khác. Ví dụ:
svn log | sed -n '/Dec 2009/,/-----$/ p'
Sẽ trả lại tất cả các cam kết được thực hiện trong tháng 12 (bởi bất kỳ tác giả nào).
Edit: Nếu bạn không muốn cam kết thông báo thực tế, nhưng chỉ là siêu dữ liệu tóm tắt, sau đó bạn có thể chỉ cần sử dụng grep
, một cách tương tự như William Leara của Windows answer:
svn log | grep username
của Windows phiên bản:
svn log | find "William_Leara"
Kết quả trông giống như:
r11506 | William_Leara | 2009-12-23 19:29:12 -0600 (Wed, 23 Dec 2009) | 12 lines
r11505 | William_Leara | 2009-12-23 15:18:37 -0600 (Wed, 23 Dec 2009) | 12 lines
r11504 | William_Leara | 2009-12-22 19:16:12 -0600 (Tue, 22 Dec 2009) | 12 lines
r11503 | William_Leara | 2009-12-22 19:04:15 -0600 (Tue, 22 Dec 2009) | 12 lines
r11502 | William_Leara | 2009-12-22 18:49:33 -0600 (Tue, 22 Dec 2009) | 12 lines
r11501 | William_Leara | 2009-12-22 18:26:45 -0600 (Tue, 22 Dec 2009) | 12 lines
r11500 | William_Leara | 2009-12-22 18:05:04 -0600 (Tue, 22 Dec 2009) | 12 lines
r11499 | William_Leara | 2009-12-22 17:25:25 -0600 (Tue, 22 Dec 2009) | 12 lines
r11498 | William_Leara | 2009-12-22 17:03:18 -0600 (Tue, 22 Dec 2009) | 12 lines
r11497 | William_Leara | 2009-12-22 16:54:59 -0600 (Tue, 22 Dec 2009) | 12 lines
r11494 | William_Leara | 2009-12-21 14:36:20 -0600 (Mon, 21 Dec 2009) | 12 lines
r11491 | William_Leara | 2009-12-19 12:48:49 -0600 (Sat, 19 Dec 2009) | 12 lines
, vv
Điều này tương đương với 'svn log | grep 'William_Leara'' trong Unix. Tôi đã không nghĩ rằng OP có thể chỉ muốn siêu dữ liệu. Giải pháp 'sed' trong câu trả lời của tôi cũng trích xuất các thông điệp cam kết, có thể hoặc không thể là những gì anh ta muốn. –
Nếu bạn không nhớ đọc ghi ở định dạng XML, dưới đây là cách với XML Starlet:
svn log --xml --verbose <directory> | xmlstarlet sel -t -m "/log/logentry/author[text()='<wanted author>']/.." -c "."
Nếu bạn không muốn các tập tin được liệt kê, hãy tháo --verbose
.
Đây là kết quả ví dụ không có chi tiết.
$ svn log --xml zfce | xmlstarlet sel -t -m "/log/logentry/author[text()='pekka.jarvinen']/.." -c "."
<logentry revision="157">
<author>pekka.jarvinen</author>
<date>2009-09-26T19:23:40.060050Z</date>
<msg>fix</msg>
</logentry><logentry revision="156">
<author>pekka.jarvinen</author>
<date>2009-09-25T20:40:01.823746Z</date>
<msg>Dojo files are now downloaded from Google. Also some XHTML JS fixes (CDATA to <script>).</msg>
</logentry><logentry revision="155">
<author>pekka.jarvinen</author>
<date>2009-09-25T17:28:14.501392Z</date>
<msg>Added spans</msg>
</logentry><logentry revision="154">
<author>pekka.jarvinen</author>
<date>2009-09-25T17:21:17.375304Z</date>
<msg>Changed behavior: default.css is now not used as base. CSS in .INI configuration is always loaded.</msg>
</logentry><logentry revision="151">
<author>pekka.jarvinen</author>
<date>2009-04-10T00:24:41.683379Z</date>
<msg>Added more PHP and Apache information</msg>
</logentry>
...
Câu trả lời hay nhất, imo –
Cho đến nay IMHO mạnh mẽ nhất, nhưng tôi không thể làm cho xmlstarlet hoạt động ở chế độ phát trực tiếp, vì vậy tôi phải cắt và đóng các thẻ của nhật ký. – ATorras
Cách tiếp cận dễ nhất là sử dụng ứng dụng khách dòng lệnh Subversion 1.8+; nó hỗ trợ các tùy chọn --search
và --search-and
cho phép bạn lọc đầu ra svn log
để chỉ hiển thị các bản chỉnh sửa phù hợp với mẫu tìm kiếm bạn chỉ định.
SVNBook 1.8 | svn log
command-line reference,
Subversion 1.8 Release Notes | svn log
can filter log messages based on search terms.
Ví dụ,
tìm kiếm sửa đổi cam kết của thành viên Sally hay Harry:
$ svn log --search Sally --search Harry https://svn.example.com/repos/test
------------------------------------------------------------------------
r1701 | Sally | 2011-10-12 22:35:30 -0600 (Wed, 12 Oct 2011) | 1 line
Add a reminder.
------------------------------------------------------------------------
r1564 | Harry | 2011-10-09 22:35:30 -0600 (Sun, 09 Oct 2011) | 1 line
Merge r1560 to the 1.0.x branch.
------------------------------------------------------------------------
$
tìm kiếm sửa đổi cam kết của thành viên Sally đến/foo/bar/helloworld.cpp:
$ svn log --verbose --search Sally --search-and /foo/bar/helloworld.cpp https://svn.example.com/repos/test
------------------------------------------------------------------------
r1555 | Sally | 2011-07-15 22:33:14 -0600 (Fri, 15 Jul 2011) | 1 line
Changed paths:
M /foo/bar/helloworld.cpp
Typofix.
------------------------------------------------------------------------
r1530 | Sally | 2011-07-13 07:24:11 -0600 (Wed, 13 Jul 2011) | 1 line
Changed paths:
M /foo/bar/helloworld.cpp
M /foo/build
Fix up some svn:ignore properties.
------------------------------------------------------------------------
$
LƯU Ý: Bạn cũng có thể sử dụng TortoiseSVN's Revision Log Dialog để thực hiện tìm kiếm và lọc.
Dưới Windows, sử dụng UnxUtils phiên bản của sed
, tôi cần phải sử dụng các regexps thay vào đó, phù hợp với ---- lúc bắt đầu tiếp theo của dòng:
svn log | sed -n "/username/,/^----/p"
- 1. Subversion: howto tìm tất cả các bản sửa đổi không được hợp nhất vào thân cây?
- 2. Làm cách nào để xem các thay đổi được thực hiện sau khi sửa đổi được cam kết và phân tích các thay đổi đó cho nhận xét?
- 3. Làm cách nào để tôi có thể thực hiện nhiều thư mục cùng một lúc bằng cách sử dụng subversion?
- 4. Phiên có thể sửa đổi được bởi khách hàng/người dùng không?
- 5. Subversion: Có thể thực hiện nhiều thao tác sao chép trong một bản sửa đổi duy nhất không?
- 6. Tôi làm cách nào để trình duyệt có thể xem các thay đổi CSS và Javascript?
- 7. tìm kiếm người dùng badoo.com - cách này có thể được thực hiện?
- 8. Làm cách nào tôi có thể tìm thấy người dùng được tạo bởi id phiên của nó?
- 9. Cách hiệu quả nhất để tìm người dùng nào thích một tweet cụ thể?
- 10. Làm thế nào để phát hiện một công cụ sửa đổi bàn phím trong một bookmarklet?
- 11. Tôi làm cách nào để lọc danh sách được gửi bởi nhiều người dùng trong Perforce?
- 12. Làm cách nào để tìm bản sửa đổi đã thay đổi một dòng trong mã của tôi bằng TortoiseSvn?
- 13. Làm cách nào để tìm kiếm tất cả các bản sửa đổi của một tệp trong một kho lưu trữ SubVersion?
- 14. Làm cách nào để chỉnh sửa khóa đăng ký của một người dùng cụ thể theo chương trình?
- 15. Subversion: Làm thế nào để hợp nhất các bản sửa đổi cụ thể vào thân cây khi nhiều thay đổi liên tiếp được thực hiện trong một chi nhánh?
- 16. Làm cách nào để nhận thực thể đại diện cho người dùng hiện tại trong Symfony2?
- 17. Mercurial: làm cách nào để hoàn nguyên về bản sửa đổi cụ thể?
- 18. Trong Git và Subversion, làm cách nào để tìm ra người dùng hiện tại tại thiết bị đầu cuối?
- 19. Làm cách nào để phát hiện ngôn ngữ của văn bản được người dùng nhập?
- 20. Làm cách nào để sửa đổi các phần tử trong một mảng được quản lý bởi Bộ điều khiển Ember?
- 21. Lệnh sửa đổi Subversion hiện tại
- 22. Làm cách nào để thực hiện tìm kiếm g ++ cho các tệp tiêu đề trong một thư mục cụ thể?
- 23. Tôi làm cách nào để đăng nhập một người dùng?
- 24. Làm cách nào để tôi có thể đặt một tệp có thể ghi bởi tất cả người dùng?
- 25. Cách thay đổi công cụ sửa đổi truy cập của điều khiển người dùng
- 26. Tôi làm cách nào để biết được bản sửa đổi v4 Thư viện hỗ trợ Android nào tôi sử dụng?
- 27. Làm cách nào để gỡ lỗi chương trình do một người dùng khác thực hiện?
- 28. Làm thế nào để có được tất cả người dùng trong một vai trò cụ thể?
- 29. Làm cách nào để in các truy vấn được thực hiện bởi phương thức django .save()?
- 30. kéo tệp từ một bản sửa đổi cụ thể - mercurial
lý do tại sao không gian trước khi p trong lệnh sed ? – Daniel
Khoảng trắng giữa/và p bị bỏ qua bởi sed; một số người có thể tìm thấy định dạng khác dễ đọc hơn trong nháy mắt. –