2011-12-21 33 views
5

Tôi mới dùng SVN và tôi muốn cam kết mã SVN bằng TortoiseSVN. Tôi có C + + tiêu đề và mã nguồn, nhưng tôi không biết làm thế nào để tổ chức các thư mục một cách hiệu quả trước khi tải lên phiên bản SVN. Bất kỳ đề xuất nào về cách mọi người thường làm? Có sự khác biệt nào giữa cấu trúc mã cho các ngôn ngữ khác nhau không, ví dụ C++ hoặc java. Tôi có nên làm theo bất kỳ quy tắc cụ thể nào không?Cách tổ chức kho lưu trữ SVN cho mã C++

Cập nhật

Vì vậy, sau khi kiểm tra câu trả lời tôi đã làm rõ hơn một chút. Một cấu trúc thư mục thông thường là sau một proyect:

/trunk 
/branches 
/tags 

Nhưng tôi cũng tìm thấy một cấu trúc tương tự mà tôi thích rất nhiều, đó là:

/trunk     #Keep it to developement mode always. 
    /samples   #samples of use 
    /modules   #software modules 
     /project_modName 
      /include  # .hpp files 
      /src   # .cpp files 
    /test    #unitary tests 
/branches    #experimental developements (copies of trunk at various stages) 
/tags     #estable versions 
/extras 
    /3rdparty   #libs 
    /data    #necessary data for developement 
    /doc    #documentation 
    /resources   #for window applications 

Ít nhất tôi thích nó cho các ứng dụng đa phương tiện đang .

CẬP NHẬT 2

Bản cập nhật này chỉ nhằm giải thích cách tôi tạo kho lưu trữ của mình. Tôi đã tạo một thư mục có tên là structure_svn. Bên trong tôi tạo ra cấu trúc được hiển thị ở trên. Tôi nhấp chuột phải vào thư mục mẹ và chọn nhập khẩu. Trong URL tôi viết đường dẫn thư mục (file: /// c:/svn_repos) để tự động cấu trúc được tạo dưới svn_repos, mà không có thư mục structure_svn.

Tôi muốn nhận xét rằng thư mục bạn nhấp chuột phải để nhập sẽ không bao giờ xuất hiện. Tôi vừa mới nhận ra khi tôi thử nó, và cũng được giải thích về những điều tuyệt đối.

Bước tiếp theo là chia thành công mã của tôi bên trong cấu trúc được tạo.

+0

Từ kinh nghiệm của tôi, những điều phổ biến nhất để tìm kiếm là bao gồm các tệp được tạo tự động và tệp người dùng IDE. Những điều bạn không thực sự nhận thấy cho đến khi làm việc trên một dự án được chia sẻ. Ví dụ: –

+1

Bạn có nghĩa là nhật ký lỗi không? Thực ra tôi chủ yếu nghĩ về cấu trúc thư mục và con trai, cách đặt tên cho chúng và cách sắp xếp chúng. –

+1

Tôi có nghĩa là ví dụ * .designer.cs tệp được tạo từ tệp .resx. Ngoài ra tôi biết bạn muốn bố cục/đặt tên dự án, nhưng tôi vẫn đang vật lộn với bản thân mình sau 5 năm nên tốt nhất tôi có thể đề xuất, hầu hết các dự án mã nguồn mở cho phép bạn xem xét điều khiển nguồn của họ, tìm thứ bạn thích và đi từ đó. –

Trả lời

9

Đây là cách tôi cấu trúc cây của tôi trong một dự án lập trình (chủ yếu là từ một C/C++ quan điểm):

  • /
    • src — Nguồn và tiêu đề file được viết bởi bản thân mình
    • ext — ngoài phụ thuộc; chứa các thư viện của bên thứ ba
      • lib — Biên soạn file lib libname-1.2.8
        • bao gồm — Headers
        • Donwload.txt — Có liên kết để tải phiên bản dùng
    • ide — tôi lưu trữ file dự án trong đây
      • VC10 — tôi sắp xếp các file dự án của IDE
    • bin — Các tệp nhị phân được biên dịch truy cập tại đây
    • obj — của trình biên dịch build file
      • gcc — Nếu kích thước dự án của bạn biện minh cho nó, tạo ra một thư mục riêng biệt cho các tập tin của mỗi trình biên dịch
    • doc — Tài liệu của bất kỳ loại
    • README
    • INSTALL
    • COPYING
    • makefile — Một cái gì đó để tự động hóa việc tạo các tệp dự án IDE. Tôi thích CMake hơn.

Một vài lưu ý:

  1. Nếu tôi đang viết một thư viện (và tôi đang sử dụng C/C++) tôi sẽ tổ chức các file nguồn của tôi đầu tiên trong hai thư mục được gọi là "src/include" và "src/source" và sau đó theo mô-đun. Nếu đó là một ứng dụng, sau đó tôi sẽ tổ chức chúng chỉ bằng mô-đun (tiêu đề và các nguồn sẽ đi trong cùng một thư mục).

  2. Tệp và thư mục mà tôi đã liệt kê ở trên trong in nghiêng Tôi sẽ không thêm vào kho lưu trữ mã.

Edit: Lưu ý rằng tôi đang sử dụng Mercurial, không SVN, vì vậy cấu trúc bên trên nó phù hợp cho rằng hệ thống kiểm soát phiên bản. Dù sao, tôi thấy từ bản cập nhật của bạn mà bạn đã tìm thấy một cái mà bạn thích.

+0

Cảm ơn, rất hữu ích. –

+0

src không có ide không có vẻ đặc biệt hữu ích. Làm thế nào để bạn xây dựng các dự án khổng lồ mà không cần bất kỳ tệp dự án nào (có thể là Makefile/CMakeFile/cvproj) .. – stijn

+0

@stijn Tất nhiên bạn nên có một số loại makefile (tôi thích CMake, cá nhân). Tôi sẽ thêm nó vào danh sách, để tránh nhầm lẫn. :) –

4

Một bước tiến lớn là đảm bảo tất cả các dự án của bạn thực hiện xây dựng nguồn ngoài, tức là đặt tệp tạm thời trong $ TEMP và đặt tất cả tệp đầu ra vào thư mục bin/lib chuyên dụng. Nếu được thực hiện đúng cách, điều này sẽ để lại cho bạn thư mục nguồn chứa chỉ nguồn. Có gì trong một cái tên .. Ngoài các tệp nguồn 'thuần' cũng đảm bảo rằng mọi thứ cần thiết để xây dựng nguồn là trong kho lưu trữ: tệp dự án/máy phát, tài nguyên.

Khi bạn đã nhận được đúng vị trí, có một cơ hội tốt bạn chỉ cần đặt một số tệp dự án tiêu biểu (như * .suo cho Visual Studio) vào danh sách bỏ qua của SVN và bạn đã sẵn sàng cam kết.

4

Về cơ bản, bạn có thể đặt svn vào đúng thứ mình muốn. Tiêu chuẩn duy nhất bạn có thể xem xét thực hiện theo đây là bố cục kho chuẩn: Xem here:

Trong dự án bạn có quyền tồn tại một số phương pháp hay nhất. Và chúng khác nhau cho mỗi ngôn ngữ. Ví dụ: Gói Java được sắp xếp theo không gian tên. Trong C++ thế giới mà tôi đã thấy hai cách chính cách tổ chức nó:

  • Mỗi lớp thành một tiêu đề (.h) và một tập tin nguồn ( cpp) bên trong cùng một thư mục
  • Header và nguồn được tách ra (vì vậy bạn có một thư mục đặc biệt cho các tiêu đề) Điều này là hữu ích cho các thư viện để đường dẫn này có thể được sử dụng bởi các dự án lớp trên.

Sau đó, bạn cần một thư mục cho thư viện của bên thứ ba, thư mục khác cho tệp đích và các tệp khác như tệp xây dựng hoặc tài liệu.

+0

Hữu ích. Tôi sẽ thử các phần mềm khác nhau và sau đó quyết định điều tôi thích nhất. –

4

Bạn có lời giải thích tốt trong Link tiếp theo nếu bạn là noob với svn !!

+0

cảm ơn rất nhiều, tôi đánh giá cao –

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