2010-01-05 28 views
17

Có cách nào dễ dàng, trên cam kết của một tệp, tự động chèn thông tin vào tệp mã chính nó (như tác giả, cam kết nhận xét, ngày cam kết, v.v ...) không? Tôi muốn thông tin này được thêm vào một khối ở đầu mỗi tệp được cam kết. Về cơ bản, toàn bộ lịch sử sửa đổi phải được ghi lại trong mỗi tệp mã ...Subversion: Thêm dữ liệu sửa đổi vào tập tin mã trên cam kết

Tôi thấy có cách để sử dụng thuộc tính subversion để đạt được điều gì đó tương tự, nhưng tôi không thấy cách nhận nhận xét cam kết thực sự vào tệp và tôi cũng không thấy cách giữ nhật ký đang chạy có toàn bộ lịch sử sửa đổi thay vì chỉ thông tin cam kết cuối cùng.

Tôi không nghĩ rằng đây là một ý tưởng hay vì tệp mã chỉ nên có mã trong đó, nhưng tiếc là đây là yêu cầu đối với dự án hiện tại của tôi.

Trả lời

5

Tôi biết đó không phải là câu trả lời bạn đang tìm kiếm, nhưng tôi sẽ cố gắng nói với họ về việc đó.

Đặt cược tốt nhất là sử dụng từ khóa thay thế, nhưng SVN không cung cấp từ khóa $Log$ vì lý do chính đáng (xem http://subversion.tigris.org/faq.html#log-in-source), đó là lý do tôi dùng để tranh luận về việc đăng nhập mã.

+0

Đây là các tệp mã sẽ không bao giờ được hợp nhất. Các nhà phát triển khác muốn xem các thay đổi trong tập tin trong khi họ đang làm việc trên nó. Tôi đã cố gắng giải thích rằng họ có thể nhìn thấy các thay đổi rất dễ dàng trong vòng 2 lần nhấp chuột nhưng câu trả lời là "Vâng, đó là 2 lần nhấp quá nhiều!" –

1

tôi thấy có một cách sử dụng lật đổ tính để đạt được một cái gì đó tương tự, nhưng tôi không thấy làm thế nào để có được thực tế cam kết bình luận vào file , và tôi cũng không thấy như thế nào để giữ nhật ký đang chạy có toàn bộ lịch sử sửa đổi thay vì chỉ thông tin cam kết cuối cùng.

Bạn không muốn nhận xét cam kết trong tệp của mình. Thats những gì svn log là cho, sau khi tất cả.

+0

Tôi biết đó là một ý tưởng tồi nhưng như tôi đã đề cập trong câu hỏi của mình, tôi phải làm điều đó! –

2

Tôi khuyên bạn nên sử dụng CVS để thay thế. Nó có khả năng này được xây dựng trong. CVS là khoảng 24 tuổi. Âm thanh như bạn yêu cầu tài liệu có thể là từ thời đại mà kiểm soát phiên bản không phổ biến, vì vậy bạn có lẽ tốt nhất để sử dụng một công cụ được tạo ra trong thời đại đó.

+1

Anh ta hỏi về SVN và bạn nói với anh ấy sử dụng CVS. Boo. – dlchambers

0

Ngoài ra, như bạn nói mình, là một ý tưởng ngu ngốc, tôi không thể nghĩ ra một cách đơn giản để làm điều này bằng cách sử dụng các phương pháp on-board SVN. Bạn sẽ phải đi qua từng tệp sau khi thanh toán (hoặc cập nhật) bằng tập lệnh, xác định khối "thay đổi nhật ký" trong tệp đó và cập nhật khối đó với đầu ra là svn log. Có thể được thực hiện nhưng sẽ có rất nhiều công việc, bạn sẽ phải theo dõi mọi bản sao làm việc cho những thay đổi, và nó rất tốn nhiều tài nguyên.

Ngoài ra, móc hậu cam kết có thể là điều tốt nhất để làm việc, nhưng thao tác các tệp bên trong kho bên ngoài ngữ cảnh sửa đổi âm thanh khủng khiếp, nếu có thể.

0

Chúng tôi sử dụng $Revision: 9584 $ trong một số tệp nguồn của chúng tôi và bản sửa đổi được cập nhật mỗi lần sửa đổi tệp cụ thể đó thay đổi. Nhưng tôi khá chắc chắn bạn có ý nghĩa gì đó khác.

+0

Xin chào, Tôi gặp sự cố với vấn đề này, bạn có thể xem câu hỏi của tôi không: https://stackoverflow.com/questions/48767046/netbeans-svn-commit-keywoards-not-updating – Patrick

16

Subversion hỗ trợ các từ khóa khác nhau như $Id$, $Author$, $Revision$ v.v. Để sử dụng chúng, bạn cần phải set the svn:keywords property tương ứng. Tuy nhiên, bạn không thể chèn nhận xét cam kết như $Log$. Xem số subversion FAQ vì lý do này và tôi chỉ có thể đồng ý với những lý do được đưa ra ở đó.Đặt nhận xét cam kết vào tệp chỉ đơn giản là bị hỏng theo thiết kế và bất kỳ nhận xét nào như vậy là sai thời điểm bạn không thể kiểm tra nó đối với kho lưu trữ.

Các hệ thống kiểm soát phiên bản khác cũng không hỗ trợ điều này và hầu hết trong số chúng đều có lý do tương tự (ví dụ: git).

Vui lòng không tranh cãi với điều gì đó giống như là "yêu cầu cho dự án". Nếu mã được phát hành phải bao gồm lịch sử thay đổi, bạn có thể thêm lịch sử này khi tạo bản phát hành với một số tập lệnh trợ giúp khá dễ dàng. Ít nhất, subversion chỉ đơn giản là không hỗ trợ nó. Và tôi sẽ mạnh mẽ không khuyến khích cố gắng đạt được điều này bằng móc trước. Cam kết phải không bao giờ thay đổi dữ liệu được cam kết.

+3

Bạn có thể giải thích tại sao không? –

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