2009-02-09 42 views
5

Để bắt đầu ra, tôi đã nhìn vào trang sau và hoàn toàn không có câu trả lời của tôi: how-would-you-organize-a-subversion-repository-for-in-house-software-projectshow-do-you-organize-your-version-control-repositoryCách tốt nhất để tổ chức một kho lật đổ của nhiều dự án nhỏ

Tôi cũng đã xem xét chương 8 của Pragmatic Version Control using Subversion.

Tất cả đều có lời khuyên tốt, nhưng tôi đang gặp khó khăn trong việc liên kết nó với nhu cầu của mình.

Về cơ bản, tôi muốn sắp xếp mã cho máy chủ web của mình. Chúng tôi có $ WEBROOT/htdocs và $ WEBROOT/cgi-bin. Theo thư mục htdocs của chúng tôi, chúng tôi có $ WEBROOT/htdocs/js và $ WEBROOT/htdocs/css cho tập lệnh java và các bảng định kiểu.

"Dự án" của chúng tôi không thực sự là dự án, nhưng có một số mã nhỏ - có thể là tập lệnh Perl, tệp tập lệnh java và bảng định kiểu. Chúng tôi có thể có một trăm hoặc hơn của các "dự án" nhỏ mà tất cả đều khá độc lập với nhau, nhưng tất cả đều sống dưới cùng một WEBROOT $ trên cùng một máy chủ web.

Mã của chúng tôi hiện không ở dạng lật đổ, nhưng tôi muốn nó - Tôi chỉ gặp sự cố khi tổ chức hiệu quả. Chúng tôi có thể có nhiều kho svn nếu cần thiết, nhưng nếu mỗi kho lưu trữ chỉ có 3-10 yếu tố, điều đó có vẻ như là một sự lãng phí đối với tôi.

Những gì tôi nghĩ có thể làm việc là một cái gì đó như thế này: Nếu tôi viết một kịch bản để đếm các tiến trình đang chạy trên máy chủ web (vì lợi ích của một ví dụ). Hãy nói rằng tôi có một kịch bản perl, một tập tin js, và một tập tin css. Tôi có thể đặt tên cho "dự án" webserver_processes, và kiểm tra xem nó vào kho lưu trữ như:

/svnrepo/webserver_processes/trunk 

Dưới thân cây, tôi có thể có:

htdocs/html/webserver_processes 
htdocs/js/webserver_processes 
htdocs/css/webserver_processes 
cgi-bin/webserver_processes 

tôi không có bất kỳ tài liệu html tĩnh trong này " dự án "nhưng nếu tôi đã làm, họ sẽ đi vào thư mục" html ".

Lợi ích tôi thấy trong cấu trúc này là tôi có thể kiểm tra một "dự án" tại một thời điểm mà không thực sự ảnh hưởng đến bất kỳ điều gì khác trên máy chủ web. Những bất lợi (và có lẽ nó không thực sự là một bất lợi) đang triển khai. Tôi sẽ phải triển khai 1 dự án tại một thời điểm từ kho lưu trữ. Tôi không thấy làm thế nào nó có thể tạo một bản sao làm việc với cấu trúc của tôi $ WEBROOT/htdocs và $ WEBROOT/cgi-bin bằng cách sử dụng phương pháp này.

Một tùy chọn khác:

tôi có thể tạo ra một kho lưu trữ svn như thế này:

/svnrepo/webcode/trunk 

Dưới thân cây sẽ là tất cả các mã trên máy chủ web của tôi, trong hai thư mục này:

htdocs 
cgi-bin 

Những bất lợi lớn sẽ là, đối với một mã nhỏ thay đổi thành 1 phần tử, tôi sẽ phải kiểm tra mọi phần mã trong môi trường web của tôi ment. Lợi ích (phần nào) sẽ là tôi có thể làm một "cập nhật svn" trên máy chủ web của chúng tôi để nhận bất kỳ thay đổi nào được cam kết với kho lưu trữ.

Có lẽ tôi đang làm điều này phức tạp hơn nó nên, nhưng có ai có lời khuyên nào về cách tôi có thể tổ chức hiệu quả mã của tôi trong lật đổ không?

Rất cám ơn trước!

Brian

+0

Có vẻ như hai tùy chọn của bạn là giống nhau, ngoại trừ bạn đã đặt tên cho các máy chủ webserver_processes cấp cao nhất trong một webcode và một trong webcode? – Sol

+0

Tùy chọn thứ hai là mọi thứ trong $ WEBROOT của tôi là một dự án đơn lẻ trong lật đổ. Tùy chọn đầu tiên là mọi "dự án" mà chúng tôi làm việc đều là dự án riêng của nó trong kho lưu trữ lật đổ. – BrianH

Trả lời

5

Tôi nghĩ rằng bạn đang thực hiện cuộc gọi ngay bằng cách giữ một kho lưu trữ duy nhất cho nhiều dự án của bạn, vì vậy tôi sẽ chỉ làm cho một sự thay đổi đến quá trình triển khai của bạn:

repo svn của bạn sẽ trông như thế (tùy chọn đầu tiên của bạn.)

/svnrepo/project1/trunk 
/svnrepo/project1/trunk/htdocs 
/svnrepo/project1/trunk/css 
... 
/svnrepo/project1/branches/branch1 
/svnrepo/project1/tags/blah 
/svnrepo/project2/trunk 
/svnrepo/project3/trunk 

Khi bạn muốn triển khai sử dụng tập lệnh để sao chép (các) tệp vào nơi chúng sẽ được triển khai.

Bằng cách này, bạn đang giữ một hàng rào nhân tạo (một thư mục) để tổ chức suy nghĩ của bạn giữa các dự án thay vì chỉ có một mớ hỗn độn lớn các tệp.

chỉnh sửa: vô tình lưu & thư mục bổ sung thêm cho rõ ràng

1

Tôi nghĩ đặt cược tốt nhất của bạn là tùy chọn thứ hai: có tất cả mã theo repo đơn với thư mục htdocs và cgi-bin. Đó là sự thật rằng bạn sẽ phải kiểm tra tất cả các mã của bạn, nhưng bạn làm điều đó một lần và phần còn lại của những thay đổi sẽ nhỏ hơn nhiều. Nếu đó là một máy chủ sản xuất, bạn rõ ràng sẽ cần phải kiểm tra xem tất cả các mã của bạn có sẵn sàng sản xuất hay không: giữ thân cây xanh, để nói.

Trong tương lai, cũng có thể giúp loại bỏ chức năng trùng lặp.

1

Vì bạn đang không cam kết Subversion nào, xem xét sử dụng Bazaar. Nó đặc biệt phù hợp với kiểm soát phiên bản của nhiều dự án nhỏ, vì nó có rất ít chi phí thiết lập.

+0

Bazaar trông đẹp, nhưng tiếc là chúng tôi không có python ở đây, và svn là tiêu chuẩn ở đây - đã có một máy chủ svn cho chúng tôi sử dụng - Tôi chỉ cố gắng để có được mã của chúng tôi vào nó. – BrianH

+0

Tôi sẽ đưa ra đề xuất tương tự cho Mercurial. :) –

1

Trước tiên, hãy sử dụng một kho lưu trữ duy nhất. Để biết ví dụ về cách một kho lưu trữ có thể mở rộng, hãy xem Apache svn repository. Mọi thứ là một kho lưu trữ.

Nếu bạn sử dụng một thân cây duy nhất được triển khai trực tiếp lên máy chủ web, thì bạn sẽ cần phải đảm bảo thân cây vẫn triển khai sẵn sàng. Điều đó có nghĩa là mọi sự phát triển đầu tiên sẽ xảy ra trên một nhánh được sáp nhập trở lại. Bạn không muốn kết thúc trong một tình huống mà một dự án được hoàn thành một nửa nhưng trong thân cây và một dự án khác cần thực hiện triển khai sửa lỗi trong thân cây.

tôi sẽ không lo lắng về việc đòi hỏi người kiểm tra toàn bộ thân cây, nhưng nếu đó là một vấn đề thực sự, sau đó bạn có thể xem xét một cách tiếp cận lai:

/svnrepo/trunk/project1/... 
/svnrepo/trunk/project2/... 
/svnrepo/deploy/htdocs 
/svnrepo/deploy/cgi-bin 

Trong trường hợp này, các nhà phát triển sẽ phải làm một svn copy từ dự án của họ trong thân cây đến vị trí thích hợp trong thư mục triển khai. Sau đó, bạn có thể tự động giải phóng mọi thứ theo số deploy.

+0

Tôi thích hướng bạn đang hướng tới. Trong ví dụ lai của bạn, bạn đề cập đến các nhà phát triển sẽ không phải kiểm tra toàn bộ thân cây. Nhưng làm thế nào một nhà phát triển có được kịch bản perl chính xác của họ (dưới cgi-bin) và các tệp js/css (dưới htdocs)?Và chẳng phải ví dụ lai sẽ có nhiều sự sao chép? – BrianH

+0

@BrianH: Ví dụ lai sẽ yêu cầu sao chép. Mỗi tệp sẽ ở 2 vị trí: đó là dự án nhà và thư mục triển khai. Đó là nhược điểm của nó. Điều đó mở ra khả năng của một người trực tiếp chỉnh sửa dưới "triển khai" thay vì dự án. – jaaronfarr

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