2009-07-17 50 views
6

Trong CVS, chúng tôi có dự án với nhiều thư mục trong đó. Có một bản dựng hàng đêm phải lấy nội dung từ thư mục khác nhau trong cùng một dự án CVS để xây dựng bản dựng hàng đêm. Vì vậy, tôi nên có điều đó trong tâm trí và tôi phải sửa đổi kịch bản xây dựng để kiểm tra những thứ từ các kho khác nhau nếu chúng ta chuyển sang SVN.

Tôi đã đọc SVN QA có liên quan, nhưng tôi có câu hỏi của riêng mình mà tôi cần câu trả lời.
tôi có thể làm:
Bố cục SVN - thực hành tốt nhất

/trunk 
/tags 
/branches 
/3rdparty 

đâu tất cả mọi thứ chúng tôi phát triển đi ra khỏi/trunk và bất kỳ 3rdparty rằng chúng ta không thay đổi đi vào/3rdparty.

Tất cả tốt, bây giờ kịch bản xây dựng hàng đêm phải gắn thẻ thân cây, kiểm tra thẻ, kiểm tra nội dung yêu cầu của bên thứ ba vào thư mục thích hợp, sau đó bắt đầu quá trình xây dựng.
Kết quả xây dựng (công cụ biên dịch) có thể nằm trên NFS gắn kết trong một khoảng thời gian để nhóm Tích hợp có thể quay lại 2 tuần và tạo lại các vấn đề.

Tất cả các cơ sở của tôi có được bao gồm không?

Trả lời

9

Sổ đỏ SVN here bao gồm rất nhiều thông tin về bố cục cho các loại dự án khác nhau và cách quản lý chúng.

Bạn cũng có thể muốn sử dụng móc/trình kích hoạt/externals để lấy dữ liệu từ một repo độc lập được gọi là 'bên thứ 3'. Vì vậy, khi một nhà phát triển kiểm tra một repo, anh ta cũng nhận được phần thứ 3. Có rất nhiều cách để phân tách mối quan tâm nhưng trình bày một repo thống nhất từ ​​những thành phần.

Chúc may mắn

+1

+1 để giữ các thành phần của bên thứ ba trong (các) repo riêng biệt. –

+0

Tôi có thể đã thấy một số nội dung về chi nhánh phát hành trong sách, nó sẽ là một ưu tiên tốt đẹp nếu bạn có thể chỉ ra chính xác vị trí của nó. Cảm ơn – pal4life

0

Kịch bản của tôi kiểm tra ra thân cây, làm thay đổi các tập tin (điều chỉnh số phiên bản trong các tập tin AssemblyInfo.cs, vv), sau đó các thẻ đó. Nếu bạn không cần phải sửa đổi các tập tin trong bất kỳ cách nào, sau đó gắn thẻ đầu tiên cũng sẽ là tốt.

Ngoài ra, thiết lập của bạn âm thanh tốt với tôi ít nhất.

+0

phải tham khảo bên thứ 3 bên ngoài thư mục cơ sở của bạn không phải là một ý tưởng tốt. Tôi sẽ tạo một thư mục dưới thư mục \ lib và đặt tất cả các công cụ của bên thứ 3 vào đó. Bằng cách này bạn có thể tránh các tham chiếu đến bên ngoài cơ sở của bạn. IMGLO –

+0

Bạn đã đăng kịch bản của mình ở bất cứ đâu để tôi có thể xem? Cảm ơn – un33k

+0

Đó là một kịch bản FinalBuilder, gửi cho tôi một email (địa chỉ trong hồ sơ), và tôi sẽ gửi cho bạn một bản sao. Trừ khi bạn đang sử dụng FinalBuilder mặc dù nó có thể sẽ không làm bạn tốt. –

1

Tại sao bạn không di chuyển bên thứ 3 vào thân cây? khi mỗi bạn chi nhánh một bản sao của bên thứ ba đi vào chi nhánh. Và rõ ràng bạn sẽ không thay đổi công cụ của bên thứ ba trong chi nhánh bởi vì chi nhánh của bạn đã được mã hóa dựa trên các công cụ của bên thứ 3 hiện có.

Tôi không chắc chắn về việc gắn thẻ những gì bạn đang nói đến. Đó có phải là số phiên bản bạn muốn nói không? Nếu nó là số phiên bản vượt qua mà thông qua kịch bản và nhãn xây dựng.

+3

Bên thứ ba trong thân cây? Xin đừng, theo cách điên khùng đó. 3rdparty về cơ bản là một chi nhánh của nhà cung cấp từ sổ đỏ, việc giữ chúng riêng biệt là phiếu bầu của tôi. –

1

Nếu "nhiều thư mục" là các thành phần riêng biệt mà bạn muốn phiên bản độc lập, thì bạn nên có từng thành phần trong kho lưu trữ riêng để chúng có thể được gắn thẻ riêng biệt. Nhưng nếu đây là một dự án độc lập (nghĩa là nếu bạn thường gắn thẻ và phân nhánh tất cả các thành phần với nhau), thì bạn có thể đặt tất cả mã trong cùng một kho lưu trữ.

Bạn nên cân nhắc sử dụng externals cho các tạo phẩm của bên thứ ba.

2

Có thể đáng sử dụng công cụ xây dựng như hudson hoặc kiểm soát hành trình. Luồng công việc hơi khác - các thẻ được tạo sau khi xây dựng, nhưng bạn có thể nhận thêm các mô-đun cung cấp cho bạn một số quyền kiểm soát điều đó. Điểm là, tất cả các công việc dev được thực hiện cho bạn, và bạn có được một khuôn khổ phong nha để xây dựng hàng đêm của bạn, và bạn có được một giao diện web đẹp để kiểm soát và giám sát tất cả mọi thứ.

Cá nhân, tôi sẽ đặt một số định nghĩa bên ngoài trên thân cây để kéo các thư viện của bên thứ ba thích hợp vào các vị trí thích hợp. Bằng cách đó, khi bạn thay đổi phiên bản thư viện của bên thứ ba, bạn thực hiện thay đổi đối với thân cây và không phải sửa đổi các tập lệnh xây dựng. Điều này cũng có nghĩa là bạn có thể xây dựng các phiên bản cũ hơn chỉ cần kiểm tra trunk/tag/branch thích hợp. Được cảnh báo - chỉ cần làm chúng trên thân cây, tán xạ chúng xung quanh có thể dẫn đến giết người.

Tôi cũng muốn lớp repo hơi như:

project 
/trunk 
/branches 
/tags 
3rdparty 

Đơn giản bởi vì điều này sẽ cho bạn phạm vi hơn để thêm các dự án cấp cao nhất hơn tại một số điểm. Việc này cho phép bạn quản lý các dự án khác nhau hoàn toàn độc lập - và bạn vẫn có thể sử dụng các phần tử bên ngoài để tham khảo các phiên bản phù hợp từ phiên bản này sang phiên bản khác nếu có phụ thuộc - điều này sẽ dừng những thay đổi trong một dự án một cách thầm lặng/thay đổi các dự án phụ thuộc.

Cũng có thể thực hiện điều này bằng cách sử dụng các repos riêng biệt, nhưng trong trường hợp đó, tôi sẽ tách riêng phần thứ ba thành một repo riêng biệt ngay từ đầu.

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