2010-03-02 40 views
5

Tôi là một người mới chơi Git với UNIX SCCS và trải nghiệm Microsoft Visual SourceSafe.Git có theo dõi Phiên bản không?

Trong SCCS, mỗi tệp có một phiên bản (I%), được tạo từ Bản phát hành (% R), Cấp (L%), Chi nhánh (% B) và Trình tự (S%). % I bằng R%.% L.B%.% S, được chứ? Đây được gọi là Từ khóa ID.

Mục đích là bạn chèn các Từ khóa ID này vào mã nguồn trước khi kiểm tra chúng, sau đó khi bạn kiểm tra chúng ở chế độ chỉ đọc (không thay đổi), nó sẽ chuyển đổi chúng thành số phiên bản của chúng. Ví dụ:

printf (“Phiên bản s \ n”, “% I“);

... sẽ trở thành,

printf (“Phiên bản% s \ n”, “1.4.6.2”);

nào sẽ in,

Version 1.4.6.2

SCCS theo dõi các phiên bản trên cơ sở file-by-file và increments họ mỗi khi họ đang kiểm tra trong.

Có bất cứ điều gì gần đó trong Git?

Trả lời

4

Như được thảo luận trong câu hỏi SO "To put the prefix ? to codes by Git/Svn", Git không mở rộng từ khóa RCS.

Lệnh Git gần nhất sẽ là git describe, để có một số loại tham chiếu cam kết.

Nhưng nó thường không phải là một ý tưởng tốt trộn meta-data (ví dụ: dữ liệu "phiên bản id" về dữ liệu "file") với các dữ liệu (file).
Nếu bạn thực sự cần loại thông tin này, một tệp đặc biệt riêng liệt kê tệp thông thường khác của bạn, với id phiên bản được liên kết của chúng sẽ thực tế hơn.

Ngay cả ClearCase, có khái niệm tương tự hơn SCS về chi nhánh và chuỗi trên mỗi tệp, không có số phiên bản được nhúng: Xem Embedded Version Numbers - Good or Evil?.

+0

Tôi đồng ý rằng bạn không nên tiêm số phiên bản vào mã nguồn của bạn và sau đó lưu trữ nó trong điều khiển phiên bản . Số phiên bản phải được xác định tại thời gian xây dựng - có thể thay thế mã thông báo trong mã nguồn của bạn hoặc sử dụng các tệp thuộc tính. –

3

Bạn có thể tạo tên thẻ duy nhất bằng cách sử dụng git-describe.

Lệnh tìm thẻ gần đây nhất có thể truy cập từ cam kết. Nếu thẻ trỏ đến cam kết thì chỉ thẻ được hiển thị. Nếu không, nó sẽ gắn thẻ tên với số lượng các cam kết bổ sung trên đầu đối tượng được gắn thẻ và tên đối tượng viết tắt của lần commit gần đây nhất.

Ví dụ về làm thế nào để xác định phần mềm revision number với 'git mô tả' (from here):

01 git commit -m'Commit One.' 
02 git tag -a -m'Tag One.' 1.2.3 
03 git describe # => 1.2.3 
04 git commit -m'Commit Two.' 
05 git describe # => 1.2.3-1-gaac161d 
06 git commit -m'Commit Three.' 
07 git describe # => 1.2.3-2-g462715d 
08 git tag -a -m'Tag Two.' 2.0.0 
09 git describe # => 2.0.0 
+0

Tôi không bao giờ phải gắn thẻ cam kết ban đầu. Nói cách khác, tôi đã được đưa ra mã cũ của người khác, cập nhật nó để làm việc với phiên bản mới nhất của trình biên dịch, sau đó phát hiện ra Git.Tôi có hai cam kết: mã ban đầu và các thay đổi của tôi. Tôi đoán bản gốc sẽ là chủ nhân, phải không? Vậy thì, làm cách nào để gắn thẻ cho chủ nhân? (Trên thực tế, anh ấy không phải là chủ nhân ... mã của anh ấy thật sự rất ... LOL.) – PalaDolphin

+0

master là nhánh nên trừ khi bạn tạo một nhánh mới cả hai commit của bạn sẽ nằm trên đó. – Zitrax

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