2010-02-02 40 views
79

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

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

Tôi muốn

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

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

Tôi đang làm việc với TortoiseSVN trên đầu máy khách và VisualSVN trên máy chủ kết thúc. (VisualSVN là một wrapper xung quanh cổ điển svn, mà tôi có thể nói chuyện thông qua dòng lệnh là tốt.)

Trả lời

91

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

Trong cửa sổ Nhật ký TortoiseSVN bạn có thể nhấp chuột phải vào cam kết và chọn "Chỉnh sửa thông điệp tường trình".

+0

+1 Cảm ơn vì điều này. Tôi đã làm 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 điệp tường trình để phản ánh điều đó ... trước khi vô tình cam kết toàn bộ lô. Tôi "cố định" nó bằng cách cam kết một sự thay đổi khoảng trắng với một thông điệp tường trình giải thích phần còn lại! thời gian tới, tôi sẽ biết phải làm gì. –

+1

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

+19

Bạn có hỏi * tôi * nếu bạn có quản trị viên Subversion có thẩm quyền không? :) – JesperE

57

Bạn chắc chắn có thể thay đổi thông điệp tường trình trở về trước, được bao phủ in the FAQ. Tôi không chắc chắn như thế nào dòng lệnh giao diện cho VisualSVN hoạt động, 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 làm điều này cho tất cả các phiên bản mà không bán phá giá kho và tái nạp, bạn có thể kịch bản lệnh này để làm việc trên danh sách tất cả các bản sửa đổi. Nó sẽ mất một thời gian để làm theo cách này, tùy thuộc vào kích thước của kho lưu trữ của bạn, nhưng về nguyên tắc không có lý do bạn không thể làm điều đó, và nó không liên quan đến một bãi chứa và tải lại.

Ngoài ra, vanilla SVN có lệnh svnlook là loại công cụ quản trị hoạt động trực tiếp với 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 tin vào kho lưu trữ), nhưng nhanh hơn nhiều hơn. Cú pháp hơi khác một chú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ụ đó.

+2

Nếu bạn muốn sử dụng trình soạn thảo của mình: 'svn propedit -r N svn: log'. –

+3

Cảm ơn @kazark, tôi phải làm '' 'svn propedit -r N --revprop svn: log''' để có thể thay đổi thông báo trong trình soạn thảo của tôi. – tutuDajuju

+2

Chỉ cần thêm ghi chú: theo mặc định, lệnh đó sẽ không hoạt động vì ** 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 móc gọi là ** "pre-revprop-change" **. Thông tin này là [trong FAQ] (http://subversion.apache.org/faq.html#change-log-msg) như đã đề cập ở trên. –

24

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

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

Khi kho lưu trữ cho phép, bạn có thể sử dụng Tortoise để thay đổi thông điệp tường trình cho một cam kết từ menu chuột phải trên cam kết hoặc bạn có thể sử dụng dòng lệnh.

+0

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

+0

Tôi đã thêm liên kết vào tập lệnh lệnh mẫu: http://svn.haxx.se/users/archive-2006-03/0107.shtml –

1

Chỉ cần truy cập bài đăng này với sự cố chính xác, sử dụngSortoise SVN cho ứng dụng khách và VisualSVN trên máy chủ Windows.

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

Khi việc này được thực hiện, hãy nhấn "chỉnh sửa thông điệp tường trình" trong trình đơn ngữ cảnh cuối cùng sẽ hoạt động!

2

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

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

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