2008-10-31 25 views
16

Tôi đã thực hiện một loạt các thay đổi đối với một số tệp trong một dự án. Mọi cam kết (thường là ở cấp độ tập tin) được đi kèm với một nhận xét về những gì đã được thay đổi.Làm cách nào để nhận danh sách các nhận xét cam kết từ CVS kể từ phiên bản được gắn thẻ cuối cùng?

Có cách nào để lấy danh sách từ CVS của những nhận xét này về các thay đổi kể từ phiên bản được gắn thẻ cuối cùng không?

Thưởng nếu tôi có thể thực hiện việc này thông qua plugin CVS eclipse.

CẬP NHẬT: Tôi rất muốn chấp nhận câu trả lời ở đây, nhưng tiếc là không có câu trả lời nào là những gì tôi đang tìm kiếm. Thành thật mà nói, tôi không nghĩ rằng nó thực sự có thể là một cách tuyệt vời để tạo danh sách thay đổi giữa các phiên bản (Giả sử tất cả các cam kết được thực hiện ở mức độ chi tiết hợp lý và chứa các nhận xét có ý nghĩa).

Trả lời

5

Các tùy chọn cho lệnh nhật ký cvs có sẵn here. Cụ thể, để có được tất cả các cam kết kể từ khi một từ khóa cụ thể (cho phép gọi nó là VERSION_1_0)

cvs log -rVERSION_1_0: 

Nếu mục tiêu của bạn là phải có một lệnh mà làm việc mà không cần phải biết tên của thẻ cuối cùng tôi tin rằng bạn sẽ cần phải viết một kịch bản lấy nhật ký cho nhánh hiện tại, phân tích qua để tìm thẻ, sau đó đưa ra lệnh log đối với thẻ đó, nhưng tôi đã di chuyển mọi thứ ra khỏi CVS khá lâu trước đây, vì vậy bộ nhớ của tôi có thể hơi bị gỉ.

+1

hmm Có vẻ như -r cho biết số phiên bản tệp không phải là một thẻ cụ thể. –

+0

ít nhất cvs của tôi in thẻ, tác giả và ngày ... nhưng không phải là ý kiến ​​ – Stroboskop

+1

HEAD là bí danh mới nhất, nếu bạn chưa gắn thẻ rõ ràng các phiên bản mã mới nhất – Nate

5

Nếu bạn muốn nhận kết quả nhanh chóng trên một tệp, lệnh cvs log là tốt. Nếu bạn muốn một cái gì đó toàn diện hơn, công cụ tốt nhất tôi đã tìm thấy cho điều này là một kịch bản perl được gọi là cvs2cl.pl. Điều này có thể tạo ra một danh sách thay đổi trong một số định dạng khác nhau. Nó có nhiều lựa chọn khác nhau, nhưng tôi đã sử dụng các tùy chọn tag-to-tag như thế này:

cvs2cl.pl --delta dev_release_1_2_3:dev_release_1_6_8 

hoặc

cvs2cl.pl --delta dev_release_1_2_3:HEAD 

Tôi cũng đã thực hiện so sánh sử dụng ngày với cùng một công cụ.

3

Tôi biết bạn đã "giải quyết" vấn đề của bạn, nhưng tôi đã có cùng một vấn đề và đây là cách tôi nhanh chóng nhận được tất cả các bình luận ra khỏi cvs từ một phiên bản được cho đến mới nhất:

$ mkdir ~/repo 
$ cd ~/repo 
$ mkdir cvs 
$ cd cvs 
$ scp -pr [email protected]:/cvs/CVSROOT . 
$ mkdir -p my/favorite 
$ cd my/favorite 
$ scp -pr [email protected]:/cvs/my/favorite/project . 
$ cd ~/repo 
$ mkdir -p ~/repo/svn/my/favorite/project 
$ cvs2svn -s ~/repo/svn/my/favorite/project/src ~/repo/cvs/my/favorite/project/src 
$ mkdir ~/work 
$ cd ~/work 
$ svn checkout file:///home/geek/repo/svn/my/favorite/project/src/trunk ./src 
$ cd src 
$ # get the comments made from revision 5 until today 
$ svn log -r 5:HEAD 
$ # get the comments made from 2010-07-03 until today 
$ svn log -r {2010-07-03}:HEAD

Ý tưởng cơ bản là chỉ sử dụng svn hoặc git thay vì cvs :-) Và điều đó có thể được thực hiện bằng cách chuyển đổi cvs repo thành svn hoặc git bằng cvs2svn hoặc cvs2git, chúng ta nên làm gì. Nó có câu trả lời của tôi trong vòng ba phút vì tôi có một kho nhỏ.

Hy vọng điều đó sẽ hữu ích.

2

Something như thế này

cvs -q log -NS -rVERSION_3_0::HEAD 

Nơi bạn có thể muốn ống đầu ra vào egrep để lọc ra những thứ bạn không muốn xem.Tôi đã sử dụng này:

cvs -q log -NS -rVERSION_3_0::HEAD | egrep -v "RCS file: |revision |date:|Working file:|head:|branch:|locks:|access list:|keyword substitution:|total revisions: |============|-------------" 
7

Tôi nghĩ

cvs -q log -SN -rtag1:::tag2 

hoặc

cvs -q log -SN -dfromdate<todate 

sẽ làm những gì bạn muốn. Điều này liệt kê tất cả các phiên bản và nhận xét cho tất cả các thay đổi được thực hiện giữa hai thẻ hoặc ngày, chỉ cho các tệp đã thay đổi. Trong trường hợp thẻ, ba dấu hai chấm loại trừ nhận xét cho thẻ đầu tiên. Xem cvs -H đăng nhập để biết thêm thông tin.

+0

Điều này trả lời câu hỏi. Tôi đang sử dụng rlog. Tôi thấy hai dấu hai chấm không có ba dấu hai chấm. Cũng có thể hữu ích khi để lại trong các thẻ (vì vậy hãy bỏ qua tùy chọn -N). Vì vậy: 'cvs -q rlog -S -rtag1 :: tag2' hoặc 'cvs -q rlog -S -rtaglast ::' – gaoithe

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