2012-02-13 36 views
17

Yêu cầu của tôi rất đơn giản. Vào lúc bắt đầu của mỗi tập tin nên có một bình luận khối như thế này:Bao gồm số sửa đổi SVN trong mã nguồn

/* 
* This file was last modified by {username} at {date} and has revision number {revisionnumber} 
*/ 

Tôi muốn cư {username}, {date}{revisionnumber} với nội dung thích hợp từ SVN.

Làm cách nào để đạt được điều này với NetBeansSubversion? Tôi đã tìm kiếm rất nhiều nhưng tôi không thể tìm thấy chính xác những gì tôi cần.

+0

có thể trùng lặp với [Subversion: Thêm dữ liệu sửa đổi vào tệp mã trên cam kết] (http://stackoverflow.com/questions/2008843/subversion-add-revision-data-to-code-file-on- cam kết) – geoffspear

Trả lời

13

Tôi đã xem câu hỏi this và nhận một số thông tin hữu ích. Nó không hoàn toàn trùng lặp vì tôi đang làm việc với NetBeans nhưng ý tưởng là như nhau. Đây là tiêu đề của tôi:

/* 
* $LastChangedDate$ 
* $LastChangedRevision$ 
*/ 

Sau đó, tôi đi đến Đội> properties Subversion> SVN và thêm svn:keywords như tên thuộc tính và LastChangedDate LastChangedRevision như giá trị tài sản.

Và khi tôi cam kết từ NetBeans nó trông như thế này:

/* 
* $LastChangedDate: 2012-02-13 17:38:57 +0200 (Пн, 13 II 2012) $ 
* $LastChangedRevision: 27 $ 
*/ 

Cảm ơn tất cả sự ủng hộ! Tôi sẽ chấp nhận câu trả lời của tôi vì các câu trả lời khác không bao gồm thông tin NetBeans. Tuy nhiên, tôi đưa ra +1 cho các câu trả lời khác.

+1

Điều này có thể được thực hiện trong Eclipse: Nhấp chuột phải vào cây dự án. chọn ** Nhóm -> Đặt thuộc tính **, chọn 'svn: keywords' từ ** Tên thuộc tính ** và nhập vào ** Nhập thuộc tính ** hộp văn bản:' LastChangedDate LastChangedRevision' – ecle

+0

Khi cố gắng thêm svn: keywords , không có gì xảy ra trong NB 8. – Yster

4

Bạn có thể thực hiện việc này với The SubWCRev Program.

SubWCRev là Windows giao diện điều khiển chương trình mà có thể được sử dụng để đọc tình trạng của một bản sao làm việc Subversion và tùy chọn thực hiện thay từ khóa trong một tập tin mẫu. Điều này thường được sử dụng như là một phần của quá trình xây dựng như một phương tiện kết hợp thông tin sao chép làm việc vào đối tượng bạn đang xây dựng. Thông thường nó có thể được sử dụng để bao gồm số sửa đổi trong một hộp "Giới thiệu".

Điều này thường được thực hiện trong quá trình xây dựng.

Nếu bạn sử dụng Linux, bạn có thể tìm thấy mã nhị phân Linux here. Nếu bạn muốn, bạn cũng có thể viết của riêng bạn bằng cách sử dụng đầu ra của svn log.

+0

Nếu 'Linux' được sử dụng thì sao? –

+0

@PetarMinchev Xem câu trả lời cập nhật của tôi. – RedFilter

10

Vì dữ liệu này chỉ tồn tại sau, tệp đã được cam kết nên được thiết lập bởi chính SVN chứ không phải chương trình khách. (Và xử lý phía máy khách có xu hướng bị vô hiệu hóa hoặc không được cấu hình chút nào.) Điều này có nghĩa là không có mẫu/thay thế đơn giản nào bạn muốn, bởi vì sau đó sau lần thay thế đầu tiên các biến mẫu sẽ bị mất.

Bạn có thể tìm thông tin về thay thế từ khóa SVN here. Sau đó, những thứ như $Rev$ có thể được thay thế bằng $Rev: 12 $.

0

Tôi đề xuất một cách tiếp cận hơi khác.

Đặt tiêu đề sau ở đầu tệp nguồn của bạn.

/* 
* This file was last modified by {username} at {date} and has revision number {revisionnumber} 
*/ 

Sau đó thêm một kịch bản shell như

bài cập nhật, kịch bản kiểm tra này

USERNAME=# // use svnversion to get username 
DATE=# // use svnversion to get revisio nnumber 
sed -e "s#{username}#${USERNAME}#" -e "s#{date}#${DATE}#" ${SOURCE_CONTROL_FILE} > ${SOURCE_FILE} 

trước cam kết kịch bản

cat standard_header.txt > ${SOURCE_CONTROL_FILE} 
tail --lines $((${LENGTH}-4)) ${SOURCE_FILE} >> ${SOURCE_CONTROL_FILE} 
4

Tôi đi theo gợi ý Petar Minchev, chỉ tôi đặt $ LastChangedRevision $ tag không có trong một khối bình luận nhưng đã nhúng nó vào một chuỗi. Bây giờ nó có sẵn để hiển thị số phiên bản trong hộp thoại Trợ giúp -> Giới thiệu theo chương trình.

String build = "$LastChangedRevision$"; 

Sau này tôi có thể hiển thị giá trị sửa đổi trong hộp thoại giới thiệu bằng cách sử dụng Chuỗi có tất cả các lông tơ được cắt bớt.

String version = build.replace("$LastChangedRevision:", "").replace("$", "").trim(); 
+0

Tôi sử dụng nó theo cùng một cách. – Semaphor

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