2009-06-02 27 views
12

Ok vì vậy tất cả chúng ta đều biết tiêu chuẩn SVN thiết lập củaBạn sử dụng thư mục thẻ svn cho anyways?

trunk\ 
branches\ 
tags\ 

Và tôi nhận ra rằng các khuyến nghị là thẻ nên có "đặc biệt" cam kết trong đó. Tôi đã không bao giờ thực sự được sử dụng các thư mục thẻ tuy nhiên và tôi không thấy lý do tại sao tôi sẽ bao giờ.

Hiểu biết của tôi là các thẻ \ sẽ chứa những thứ như "Version1Release \, Version2Release \, ThatTimeWeUpgradedEverthing \" v.v ... Nhưng đây là điều, nếu bạn đang đi vào và cần thực hiện thay đổi cho Version1Release thì nó phải là chi nhánh, và nếu các thẻ được cho là không bao giờ thay đổi thì whats các điểm làm cho một bản sao trong anyways kiểm soát nguồn? Chỉ cần thực hiện một sửa đổi ghi chú 712 là bản phát hành phiên bản 1 của chúng tôi.

Tôi đoán sự nhầm lẫn của tôi là có vẻ như các thẻ là các phiên bản không bao giờ được phép thay đổi. Nhưng kiểm soát nguồn là tất cả về việc giữ một lịch sử thay đổi tập tin. Tôi biết đây là một lập luận nhỏ về tổ chức, nhưng tôi tò mò những gì mọi người nghĩ.

+3

"Chỉ cần tạo bản sửa đổi 712 là bản phát hành phiên bản 1 của chúng tôi". Chỉ cần nhớ rằng 69.59.196.211 là stackoverflow.com. Không? Tại sao không? Đó là cùng một khái niệm! – Powerlord

+2

Nó thực sự là khái niệm tương tự. IP của stackoverflow được ghi nhớ bởi dịch vụ DNS dành riêng cho nhiệm vụ đó. Nó không phải là đồng lựa chọn một hệ thống khác trong một thời trang phi tự nhiên. Bạn có thể "ghi chú" trong tệp văn bản mà bạn giữ trong kiểm soát nguồn hoặc trong tài liệu phát hành của mình hoặc qua tệp zip hoặc 1 triệu cách khác nhau không liên quan đến việc sử dụng hệ thống theo dõi thay đổi để lưu trữ thứ gì đó không bao giờ bị thay đổi. –

+0

Vâng, lưu trữ nó không lấy đi bất kỳ không gian nào. Và bạn không cần phải cung cấp cho mọi người quyền truy cập vào thân cây của bạn trong khi vẫn cho phép họ tải xuống nguồn xuống phiên bản phát hành. – Joey

Trả lời

13

Chỉ cần tạo bản sửa đổi 712 là bản phát hành phiên bản 1 của chúng tôi.

Công cụ này đủ tốt cho các nhà phát triển trong nhóm, có thể (giả sử bạn có cửa hàng tài liệu để ghi chú như vậy), nhưng yêu cầu ai đó không quen thuộc với kho lưu trữ "chỉ cần nhớ" sẽ khá không hợp lý .

Ví dụ: giả sử kho lưu trữ của bạn có sẵn trên 'mạng. Người dùng có thể chọn xem và xây dựng một bản sao cho sở thích, nhưng không rõ ràng, hương vị của * nix và muốn lấy bản phát hành là một vài phiên bản trước khi bạn thêm một tính năng mà họ không thích. Tags làm cho loại điều dễ dàng.

Thẻ cũng tuyệt vời như một "điểm kích hoạt". Trong kho của riêng tôi, cam kết một thẻ tự động khởi chạy (thông qua móc hậu), một kịch bản mà xây dựng, gói và gửi nó lên trang web của chúng tôi.

Cuối cùng, thẻ là bản sao giá rẻ. Nếu bạn muốn "chụp nhanh" bản dựng của mình theo cách thể hiện rằng ảnh chụp nhanh sẽ không bao giờ thay đổi, hãy gắn thẻ nó. Nó không phải là nó chi phí bạn nhiều. :-)

Edit:

Để giải quyết những "thực hiện như chi nhánh" Ý tưởng - họ là không. Có thật không. Trên thực tế, Subversion không thực hiện phân nhánh hoặc gắn thẻ. Đó là những ý tưởng hoàn toàn do người dùng tạo, cả hai đều xảy ra để sử dụng cùng một lệnh, svn copy. Tuy nhiên, bạn cũng muốn cũng sử dụng lệnh đó để sao chép tệp trong thân cây; không có gì đặc biệt về nó. Và cũng chẳng có gì đặc biệt về các nhánh hoặc các thẻ. Chúng chỉ là những thư mục thông thường mà chúng tôi đã quyết định xử lý đặc biệt (và thậm chí có thể thực thi thông qua các móc) để dễ dàng quản lý dự án.

+2

Chính xác, vì SVN lưu trữ bản sao dưới dạng vùng đồng bằng, hầu như không có phí để tạo thẻ. Thẻ về cơ bản chỉ là một liên kết ngữ nghĩa giữa số sửa đổi và tên có thể đọc được (và URL được liên kết). –

+0

Tôi thích làm rõ trong chỉnh sửa của bạn. – crashmstr

+0

Nói kỹ thuật, có thể kiểm tra bản sao thẻ của một tệp và cam kết không? 'Svn' không ném bất kỳ lỗi nào? Nó hoàn toàn là nhà phát triển, những người nên đối xử với nó những gì nó được dự kiến ​​/ xác định cho, chính xác? – mtk

1

Thẻ được cho là tham chiếu "phiên bản ứng dụng" bất biến của một tập hợp các tệp.
("phiên bản của ứng dụng" thay vì "số phiên bản nội bộ kỹ thuật được VCS sử dụng", như sửa đổi cho SVN hoặc SHA-1 cho Git hoặc id cho ClearCase hoặc ...)
Chúng được cho là để phục vụ như tham chiếu để được truy vấn và triển khai trong không gian làm việc khác (để kiểm tra hoặc UAT - Kiểm tra chấp nhận của người dùng -)

Vì SVN thực hiện thẻ như nhánh: thư mục, khuyến khích sửa đổi tệp trong thẻ có thể mạnh mẽ , nhưng sẽ đánh bại mục đích của một thẻ. VCS khác có khái niệm về nhãn (hoặc "đường cơ sở"), một khi đã đặt, không thể di chuyển được nữa.

Để mà George Mauer nhận xét:

Well thats loại những gì tôi đã nói. Thẻ không bao giờ nên được thay đổi để nó rất ... lẻ để thực hiện chúng như các chi nhánh.

"thực hiện"? Nhưng họ đã không "thực hiện" khái niệm về thẻ. SVN không có "tag" cho mỗi se. Họ chỉ tái sử dụng các chi nhánh của họ và nói rằng nó cũng có thể được sử dụng như một từ khóa.

SVN RedBook nêu rõ:

Nhưng đợi một chút: không phải là thủ tục tạo thẻ này các thủ tục tương tự, chúng tôi sử dụng để tạo ra một chi nhánh? Có, trên thực tế, nó là.
Trong Subversion, không có sự khác biệt giữa thẻ và chi nhánh. Cả hai chỉ là các thư mục thông thường được tạo ra bằng cách sao chép.
Cũng giống như với các nhánh, lý do duy nhất mà thư mục sao chép là “thẻ” là vì con người đã quyết định đối xử với nó theo cách đó: miễn là không ai cam kết thư mục, nó mãi mãi là ảnh chụp nhanh. Nếu mọi người bắt đầu cam kết với nó, nó sẽ trở thành một nhánh.

+2

@VonC: bất kỳ cơ hội nào bạn có thể dịch điều này sang phiên bản tiếng Anh mà người dân thường hiểu. Whats là "phiên bản ứng dụng"? Tại sao "tương đồng" thay vì "phê duyệt"? – AnthonyWJones

+0

Vâng đó là những gì tôi đã nói. Thẻ không bao giờ nên được thay đổi để nó rất ... lẻ để thực hiện chúng như các chi nhánh. –

+2

@George - Tôi nghĩ rằng những gì bạn đang mắc kẹt ở đây là Subversion * không * thực hiện các chi nhánh hoặc thẻ ở tất cả. Chúng tôi, người dùng, đã quyết định rằng chúng tôi sẽ tạo ra các thư mục được gọi là/chi nhánh và/thẻ và đối xử với họ đặc biệt, nhưng Subversion chỉ đơn giản là không. Thẻ không được "triển khai dưới dạng nhánh". Chúng được triển khai dưới dạng bản sao. Chi nhánh chỉ xảy ra để được thực hiện theo cùng một cách. –

1

Chúng tôi sử dụng nó để gắn thẻ cụ thể xây dựng mà là thú vị nhưng không phải phiên bản, ví dụ như: "Nhà đầu tư Demo", vv

1

thẻ không dự định được sửa đổi, bạn nên thực hiện một chi nhánh nếu bạn muốn làm điều đó.

Bạn có thể tạo một chi nhánh từ thẻ, có thể là những gì bạn muốn làm, sau đó gắn thẻ lại kết quả của nhánh đó dưới dạng phiên bản khác.

Bạn không nên kiểm tra thẻ để chỉnh sửa.

Bạn không mất bất kỳ lịch sử nào bằng cách phân nhánh (sao chép) trong SVN. Tất cả đều được liên kết với nhau.

0

Tôi tạo thẻ mỗi khi tôi quảng cáo dự án từ máy chủ phát triển đến máy chủ sản xuất. Điều này mang lại cho tôi một lịch sử về những gì mã được thúc đẩy để sản xuất. Nếu có bất kỳ vấn đề gì, tôi có thể nhanh chóng quay lại phiên bản sản xuất trước đó.

Bạn sẽ không muốn thanh toán/thay đổi/cam kết bất kỳ điều gì trong thư mục thẻ. Nó chỉ đơn giản là một nơi để giữ một bản chụp của mã của bạn từ một điểm nhất định trong thời gian.

2

Chỉ cần tạo bản sửa đổi 712 là bản phát hành phiên bản 1 của chúng tôi.

Nhưng trong trường hợp đó, bạn phải ghi chú rõ ràng, lưu trữ ghi chú đó ở đâu đó ở nơi mọi người có thể nhìn thấy và tìm kiếm.

Việc tạo thẻ từ bản sửa đổi 712 dễ dàng hơn nhiều (tức là, sao chép từ r712 vào thư mục thẻ) với tên "bản phát hành phiên bản 1". Và mọi người ngay lập tức biết rằng đây là bản phát hành, mà không cần phải tìm kiếm bản sửa đổi bản phát hành phiên bản 1.

+0

Rất phổ biến, bạn có thể làm cho nó trong tài liệu phát hành của bạn, hoặc thậm chí trong một tập tin được lưu trữ trong kiểm soát nguồn. Vấn đề của tôi là nhiều hơn với thực tế là mục đích của các thẻ không phải là ở tất cả giống như mục đích của thân cây hoặc các chi nhánh –

+2

Bạn đang phải. Thẻ không giống như thân cây hoặc nhánh; đó là lý do tại sao các thẻ tồn tại. Chúng cho một mục đích khác với thân cây hoặc cành cây. –

6

Chỉ cần tạo bản sửa đổi 712 là bản phát hành phiên bản 1 của chúng tôi.

Đối với tôi, làm cho một Tag thực hiện một lưu ý rằng rev 712 là phiên bản 1.

Nó cũng rất dễ dàng để xem tất cả các xây dựng, mốc thời gian, thông cáo, vv chỉ bằng cách nhìn vào thư mục Thẻ.

Nếu bạn xem xét cách Nhãn hoạt động trong VSS, Thẻ nhanh hơn và dễ làm việc hơn nhiều, nhưng thực hiện tương tự. Chỉ cần không phân tích thực tế rằng nó được thực hiện bằng cách sử dụng lệnh sao chép giống như một nhánh.

Chỉnh sửa: Nếu bạn hoang tưởng về người nào đó thực hiện thay đổi đối với thư mục Thẻ, bạn có thể sử dụng móc trước cam kết để ngăn người dùng chặn.

+0

Nhưng việc thực hiện SVN là như vậy mà bạn có thể sửa đổi nó.Tại tốt nhất của nó lẻ và tồi tệ nhất của nó yêu cầu cho những rắc rối từ những người chỉ không nhận được nó nó –

+1

"nhận được" kiểm soát nguồn là bước đầu tiên để sử dụng nó đúng. Nếu bạn không nhận được nó, Tags có lẽ là ít nhất của mối quan tâm của bạn. – crashmstr

+0

Thats thực sự bên cạnh điểm. Tại sao cung cấp một cơ chế để làm một cái gì đó hoạt động theo cách khuyến khích bạn sử dụng nó một cách sai lầm? –

0

Trong thẻ kinh nghiệm của tôi được sử dụng cho các điểm đánh dấu phát hành và nơi bạn không có khả năng thực hiện sửa đổi.

Nếu bạn tạo chi nhánh "release2-0" và sau đó cần thực hiện thay đổi (ví dụ: để khắc phục lỗi tìm thấy sau khi ra mắt), nó không còn đại diện cho những gì bạn đã phát hành cho phiên bản 2.0.

Nếu thay vào đó bạn tạo thẻ "release2-0" và thấy bạn cần vá phiên bản đó, bạn có thể tạo chi nhánh mới, sửa chữa ở đó và gắn thẻ là "release-2-0-1".

Bằng cách này, bạn có thể dễ dàng truy cập bất kỳ bản phát hành nào của mình.

2

Kho lưu trữ subversion chỉ là một cây duy nhất của tệp và thư mục, nơi bạn có thể lấy bất kỳ phần nào của cây đó ở bất kỳ phiên bản nào trong lịch sử của nó bất kỳ lúc nào.

Như những người khác đã nói thẻ/nhánh/thân là tất cả chỉ là một quy ước trên đó, lật đổ cho phép bạn sao chép một phần của cây ở một nơi khác (gần như) miễn phí, nhưng trong cốt lõi của nó, đó là về nó .

Bạn nói đúng là bạn sẽ cần một chi nhánh bảo trì cho phiên bản của bạn. Thẻ hoạt động như tên của bạn cho bất kỳ phiên bản cụ thể nào được gửi ở đâu đó bên ngoài - và nhận xét cam kết khi bạn tạo thẻ cho bạn cơ hội giải thích nó ở đâu và tại sao (ví dụ: "phát hành beta công khai", "yêu cầu nhận xét").

Có một số tập lệnh móc không cho phép bạn sửa đổi thẻ, nhưng chúng sẽ không được thực thi theo mặc định vì một số người sử dụng phiên bản phụ theo cách hoàn toàn khác (ví dụ: sao lưu tệp cấu hình, v.v.). Subversion là một công cụ chung, không có cách nào 'đúng' để sử dụng nó, chỉ là các quy ước mạnh mẽ cho các tình huống phổ biến.

Thực tế, cộng tác đang bắt đầu xem xét cách kiểm soát sửa đổi được sử dụng cho non-developmentprojects. Toàn bộ ý tưởng về các thẻ và thân cây có thể không liên quan đến một số trong số này.

ước của tôi khi nghĩ về một kho lưu trữ mã nguồn là:

  • Trunk - danh sách đầy đủ các phiên bản có thể sẽ được phát hành để sống
  • công tác - một mô tả bên ngoài của một công việc/lỗi mà nhóm một bộ sửa đổi
  • chi nhánh phát triển - một tập hợp các sửa đổi mà không phải là chưa sẵn sàng cho đường ống
  • chi nhánh Bảo trì - một nơi để thu thập các phiên bản từ thân cây cho phát hành
  • Tag - một bản chụp được đặt tên của một chi nhánh bảo trì

Tags cũng có thể cung cấp cho bạn một địa chỉ có thể sử dụng cho các tài liệu, ví dụ:

"Việc phát hành có sẵn tại http://svnserver/myproject/tags/1.0" Nó có thể là: "Việc phát hành có sẵn tại http://svnserver/myproject/[email protected] "

Nhưng khi bạn duyệt qua kho lưu trữ, bạn sẽ không bao giờ gặp phải @ 4483 và biết rằng đó là bất kỳ cách nào đặc biệt.

+0

Thật vậy, tôi hiểu lập luận này, có vẻ như vì các thẻ được sử dụng như các nhãn không thay đổi nên có một cơ chế riêng để biểu thị chúng - giống như một thẻ đặc biệt được đặt trong thông điệp cam kết hoặc một cái gì đó. –

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