2009-03-25 4 views
36

Công ty chúng tôi đang tạo quy ước đặt tên cho các chi nhánh và thẻ SVN, và tôi không nhầm lẫn với ý tưởng chỉ sử dụng ngày hoặc số xây dựng trên các tên chi nhánh/thẻ.Bạn sử dụng quy ước đặt tên nào cho Chi nhánh và Thẻ SVN?

Tôi nghĩ rằng chúng ta cần tên đó sẽ đem lại một định nghĩa nhiều hơn về những gì con đường này thể hiện, những gì nỗ lực đang được thực hiện, vv

Bạn nghĩ gì/sử dụng không?

+0

tôi muốn mở rộng các câu hỏi để hỏi những gì quy ước đặt tên có thể được dùng để phân biệt các chi nhánh thực nghiệm (thay đổi vi phạm lớn sáp nhập sau) từ các chi nhánh được tạo để duy trì các phiên bản cũ hơn. Có lẽ có nhiều "loại" hơn của chi nhánh. – SandRock

Trả lời

2

Tất cả các tác vụ của nhà phát triển của chúng tôi đều đi vào hệ thống theo dõi lỗi. Hệ thống theo dõi lỗi này có các ID được liên kết với mỗi tác vụ.

Vì vậy, cho tên chi nhánh của bất kỳ công việc, chúng tôi sử dụng:

ticketId_TicketSubject

Khi một nhánh chứa nhiều ticketIds chúng tôi chỉ kết hợp chúng thành tên chi nhánh:

ticketId1_ticketId2_Description

Bằng cách đó nếu bạn đang ở trong một vé và bạn muốn biết chi nhánh nào để xây dựng, bạn có thể dễ dàng tìm kiếm nó. Tương tự như vậy nếu bạn muốn tìm vé với bản dựng chi nhánh của mình, bạn cũng có thể dễ dàng tìm thấy nó.

Đối với thẻ, chúng tôi tự gắn thẻ cho chính mã số phiên bản.

Đối với vị trí của từng chi nhánh. Chúng tôi có một hệ thống phân cấp cấp cao nhất như thế này:

/branches

/tags

/trunk

Sau đó, tất cả các sản phẩm của chúng tôi/dự án đi theo mỗi người trong số những người bên trong các thư mục con của riêng mình.

/trunk/project1/

/branches/project1/TicketId_Description

4

Đối với một chi nhánh tính năng, tên nó sau những gì đang được thực hiện. Ví dụ, tôi đã chuyển ORM của chúng tôi từ LINQ to SQL sang NHibernate và tạo một nhánh có tên "NHibernate". Một khi bạn đã hoàn thành chi nhánh và sáp nhập nó trở lại vào thân cây, bạn có thể xóa các chi nhánh để lưu xung đột đặt tên trong tương lai. Nếu bạn thực sự cần phải lấy nhánh bạn có thể, bạn chỉ cần phải nghiên cứu lại lịch sử và khôi phục lại nó.

Nếu bạn có số câu chuyện/báo giá/công việc có liên quan đến chi nhánh, tôi sẽ thêm nó vào tên của chi nhánh ví dụ. "NHibernate_429" để bạn có thể dễ dàng tham chiếu nó với hệ thống theo dõi của bạn. Tuy nhiên, tôi sẽ luôn luôn đi với tiếng Anh đầu tiên vì đó là những gì mọi người thực tế sẽ đề cập đến nó khi nó đang được phát triển.

Đối với những thứ như thẻ khó nói những gì bạn muốn làm vì nó phụ thuộc vào nội dung bạn đang gắn thẻ. Nếu bạn đang gắn thẻ bản phát hành thì tôi sẽ sử dụng "Release X.X.X.X "hoặc một cái gì đó đơn giản như thế. Bạn thực sự sẽ không quan tâm ngày tháng hoặc số bản dựng là gì khi bạn nhìn lại một bản phát hành cụ thể làm ví dụ.

1

Những gì chúng tôi sử dụng (chủ yếu tuân theo quy ước được chấp nhận) :

projectName 
| 
--trunk 
| 
--tags 
| 
--branches 

Dưới thân chúng ta có thân chính

Dưới thẻ chúng tôi gắn thẻ mọi phiên bản (cả nội bộ, kiểm tra phiên bản và phiên bản khách hàng) Ở đó chúng ta chỉ cần sử dụng số phiên bản như tên thẻ

...

Dưới chi nhánh chúng tôi có o ne chi nhánh cho mỗi phiên bản chính chúng tôi phát hành (trong trường hợp của chúng tôi là kết quả của một lần lặp XP). Chúng được đặt tên giống như phiên bản chính ("v5.03", "v6.04"). Ngoài ra, chúng tôi có các chi nhánh nội bộ cho những thay đổi lớn hoặc các phiên bản đặc biệt. Có đặt tên là tự do, và tên được cho là để nói với mọi người những gì chi nhánh đại diện. Expamples sẽ là "workaround_customerA", "module_x_reorg", v.v.

0

Chúng tôi cung cấp cho các chi nhánh của chúng tôi phiên bản ".X", trong đó các thẻ có số.

Ví dụ, chi nhánh sẽ Foo-1.2.3.X, và các thẻ sẽ Foo-1.2.3.1, Foo-1.2.3.2 vv

Chúng tôi cũng có một thẻ đặc biệt, Foo -1.2.3.0, được thực hiện ngay khi nhánh được tạo từ thân cây, trước bất kỳ thay đổi nào. Vì vậy, chúng tôi có thể phân biệt các chi nhánh và thẻ cho trạng thái ban đầu bất kỳ lúc nào (vì trong một vài ngày, thân cây có thể khác nhau). Thực tế này đã làm cho việc sáp nhập dễ dàng hơn một chút và nó giúp tìm ra mã nào đã thay đổi trong nhánh dễ dàng hơn rất nhiều.

13

Tôi luôn luôn thêm tiền tố cho các thẻ (và thường là các nhánh) với ngày ở định dạng YYYYMMDD, theo sau là mô tả về mục đích của thẻ hoặc chi nhánh.

ví dụ 20090326_Release_v6.5 hoặc 20090326_Post_Production_Update

Đây là theo tiêu chuẩn trunk/thẻ/chi nhánh thứ bậc của khóa học.

Tiền tố ngày đảm bảo rằng tất cả các thẻ hoặc chi nhánh được hiển thị theo thứ tự sáng tạo, hữu ích hơn rất nhiều sau đó chỉ được sắp xếp theo mô tả nếu bạn quét qua thư mục lớn của thẻ. Bạn thấy dòng thời gian khi nào và tại sao chúng được tạo ra (như các thông điệp nhật ký nhỏ).

+1

Sử dụng thẻ làm cơ chế theo dõi thông tin mà hệ thống theo dõi lỗi được thiết kế để có vẻ phản trực giác. Hầu như chỉ có điều duy nhất tôi từng thấy là sử dụng một số phiên bản trong thẻ. Số phiên bản đó tương quan với bản phát hành của hệ thống theo dõi lỗi, sau đó có bất kỳ chi tiết nào bạn cần. –

8

Vâng, phân nhánh là khá nhiều mở, vì có một số loại khác nhau của các chi nhánh, việc đặt tên của chúng có thể rất khác nhau.

Điều đáng nhớ là kiểm soát nguồn nào cung cấp cho bạn. Tên thẻ không chỉ là "v1.4", nó là "/CashCowProject/tags/v1.4". Đặt tên cho một thẻ "/CashCowProject/tags/CashCowProject-v1.4" hơi dư thừa, nó sẽ là gì?

Kiểm soát sửa đổi cũng cung cấp cho bạn toàn quyền truy cập vào ngày và giờ mà thẻ đã được tạo. Kiểm soát sửa đổi cũng cung cấp cho bạn các thư cam kết mà bạn nên sử dụng, đặc biệt là dòng đầu tiên.

Với tất cả những thông tin này, nó không phải là khó khăn để kéo lại với nhau một cái nhìn đơn giản đem lại cho bạn tất cả các thông tin mà bạn cần, đến từ các nguồn phù hợp và thích hợp, chẳng hạn như:

CashCowProject 
    v1.4 - 26 March 2009  : With Added whizzbang (more) 
    v1.3 - 13 February 2009 : Best graphics!  (more) 
    v1.2 - 01 January 2009 : Upgraded security (more) 

Điều duy nhất mà tên thẻ thực sự hữu ích cho đây là số phiên bản.Nếu bạn đang cố gắng để đặt tất cả các thông tin vào một tên thẻ, nó là một chút wordy và tôi đặt cược nó sẽ không nhìn tốt.

+0

Điều đó nói rằng, tôi vẫn đặt tên cho các thẻ của mình là "Project-4.8" –

+1

Tôi nghĩ suy nghĩ này hoạt động tốt cho các thẻ, nhưng không nhất thiết cho các nhánh. Tôi có thể mở một chi nhánh thử nghiệm, và một số sẽ cho tôi biết không có gì về chi nhánh này. –

+2

Thật vậy, tôi hoàn toàn rời khỏi việc đặt tên chi nhánh ra khỏi câu trả lời này, và một số sẽ không phải là một tên chi nhánh tốt. –

0

tốt hơn:

<projectname>_<Year>_<minor>_00 

như:

XYZ_14_01_00