Thay đổi thông báo cam kết SVN trở về trước?


85

Tôi muốn viết lại một số lượng lớn các thông báo cam kết SVN sang một cấu trúc khác, ví dụ tiền tố một danh mục. Từ:

"foo" now accepts "bar" format for connection string.

tôi muốn

core - database - "foo" now accepts "bar" format for connection string.

Có cách nào dễ dàng để làm điều này mà không bao gồm việc sử dụng toàn bộ kho lưu trữ svndumpfilterkhông?

Tôi đang làm việc với TortoiseSVN ở đầu máy khách và VisualSVN ở đầu máy chủ. (VisualSVN là một trình bao bọc xung quanh cổ điển svn, mà tôi cũng có thể nói chuyện thông qua dòng lệnh.)

Câu trả lời:


98

Có, tin nhắn cam kết có thể được thay đổi. Chúng được triển khai dưới dạng thuộc tính trên các bản sửa đổi, tương tự như thuộc tính tệp thông thường.

Trong cửa sổ TortoiseSVN Log, bạn có thể nhấp chuột phải vào một cam kết và chọn "Chỉnh sửa thông báo nhật ký".


+1 Cảm ơn vì điều này. Tôi đã thực hiện một số công việc liên quan đến một số thay đổi API mà tôi muốn cam kết riêng với phần còn lại và tôi đã viết thông báo nhật ký để phản ánh điều đó ... trước khi vô tình cam kết toàn bộ. Tôi đã "sửa chữa" nó bằng cách thực hiện thay đổi khoảng trắng với thông báo nhật ký giải thích phần còn lại! lần sau, tôi sẽ biết phải làm gì.
Ed Daniel

1
Tôi cũng đã cho cái này +1, nhưng sau đó nó không hoạt động với thông báo "Hệ thống lưu trữ chưa được kích hoạt để chấp nhận các đề xuất sửa đổi; yêu cầu quản trị viên tạo một móc thay đổi trước sửa đổi". Quản trị viên sẽ tự động biết những gì phải làm?
J.Merrill

19
Bạn đang hỏi tôi liệu bạn có quản trị viên Subversion có năng lực không? :)
JesperE

@ J.Merrill Bạn phải duyệt đến hooksthư mục tại vị trí của kho lưu trữ và đổi tên thành pre-revprop-change.tmplđể pre-revprop-change.batnó hoạt động.
sa_leinad

59

Bạn chắc chắn có thể thay đổi thông báo nhật ký về trước, nó được đề cập trong Câu hỏi thường gặp . Tôi không chắc giao diện dòng lệnh cho VisualSVN hoạt động như thế nào, nhưng đối với vani svn, lệnh sẽ

svn propset -r N --revprop svn:log "new log message" URL

Nếu bạn muốn thực hiện việc này cho tất cả các bản sửa đổi mà không cần kết xuất kho lưu trữ và tải lại, bạn có thể viết lệnh này để làm việc trên danh sách tất cả các bản sửa đổi. Sẽ mất một chút thời gian để thực hiện theo cách này, tùy thuộc vào kích thước kho lưu trữ của bạn, nhưng về nguyên tắc thì không có lý do gì bạn không thể làm điều đó và nó không liên quan đến việc kết xuất và tải lại.

Ngoài ra, vanilla SVN còn có một lệnh svnlooklà một công cụ quản trị hoạt động trực tiếp với các tệp kho lưu trữ. Công cụ đó không hiểu URL (bạn phải có quyền truy cập cấp hệ thống tệp vào kho lưu trữ), nhưng nhanh hơn nhiều . Cú pháp có một chút khác biệt, nhưng bạn có thể sửa đổi các thuộc tính theo cách tương tự bằng cách sử dụng công cụ đó.


3
Cảm ơn @kazark, tôi đã phải làm gì svn propedit -r N --revprop svn:logđể có thể thay đổi thông báo trong trình chỉnh sửa của mình.
tutuDajuju

3
Chỉ cần thêm một ghi chú: theo mặc định, lệnh đó sẽ không hoạt động, vì các thay đổi đối với thuộc tính sửa đổi không được phép theo mặc định. Để cho phép nó, quản trị viên svn phải tạo một hook có tên "pre-revprop-change" . Thông tin này có trong Câu hỏi thường gặp như đã đề cập ở trên.
Matthias

trên Windows, bạn sẽ cần đặt biến môi trường "SVN_EDITOR", "VISUAL" hoặc "EDITOR" trước khi chạy lệnh. Ví dụ:set SVN_EDITOR=notepad.exe
Đã đăng ký

26

Có, bạn có thể, nhưng trước tiên bạn cần kích hoạt nó trên kho lưu trữ.

Trong kho lưu trữ, trong thư mục hooks, là một tệp có tên pre-revprop-change.tmpl. Nó có một vài trang bình luận về những gì nó làm và được thiết lập để chỉ cho phép thay đổi các thuộc tính nhật ký. Để kích hoạt nó, hãy đổi tên tệp thành pre-revprop-change và làm cho nó có thể thực thi được (Tôi giả sử là một phiên bản con được lưu trữ trên máy POSIX, nếu bạn đang sử dụng Windows để lưu trữ, bạn có thể thấy thông báo này hữu ích).

Sau khi kho lưu trữ cho phép, bạn có thể sử dụng Tortoise để thay đổi thông báo nhật ký cho một cam kết từ menu chuột phải vào một cam kết hoặc bạn có thể sử dụng dòng lệnh.


+1 Thông tin tuyệt vời thưa ông. Nó sẽ không cho phép tôi làm điều đó nếu không có móc thay đổi trước vòng quay. Tôi sẽ phải chuyển tập lệnh bash mẫu sang cửa sổ, nhưng đó không phải là vấn đề.
Pekka

Tôi đã thêm liên kết vào tập lệnh lệnh ví dụ: svn.haxx.se/users/archive-2006-03/0107.shtml
Andrew Aylett


2

svn propedit -r N --revprop svn:log URL

URLở trên là tùy chọn nếu bạn đã ở trong một thư mục đang làm việc. Một trình soạn thảo sau đó sẽ xuất hiện để có thể thay đổi thông báo.


1

Vừa qua bài đăng này với sự cố chính xác, sử dụngTortoise SVN cho máy khách và VisualSVN trên máy chủ Windows.

Nếu bạn tình cờ gặp thông báo lỗi "yêu cầu DAV không thành công" , hãy xem câu trả lời của Andrew Aylett và đi chỉnh sửa "pre-revprop-change.tmpl" trong thư mục con hooks kho lưu trữ của bạn.

Sau khi hoàn tất việc này, nhấn "chỉnh sửa thông báo nhật ký" trong menu ngữ cảnh cuối cùng sẽ hoạt động!

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.