2010-12-28 32 views
11

Tôi đang làm việc trên một dự án nhỏ, được lưu trữ trên Google Code, sử dụng SVN để kiểm soát nguồn. Đây là lần đầu tiên tôi sử dụng điều khiển nguồn và tôi hơi bối rối về những gì tôi thực sự nên cam kết với kho lưu trữ. Dự án của tôi rất đơn giản: Một dự án thư viện lớp học, được viết bằng C#. Mã thực tế mà tôi đã viết là một tệp duy nhất.Khi sử dụng kiểm soát nguồn, những tệp nào thực sự nên được cam kết?

Câu hỏi của tôi là: Tôi có nên cam kết toàn bộ dự án (bao gồm các thư mục như Debug, Release, Properties, v.v.) hay chỉ là tệp .cs chính của tôi?


Sau khi chiến đấu với Subversion trong một thời gian (lưu ý để tự: làm kho reset không), có vẻ như cuối cùng tôi đã có nó làm việc với các thư mục đặt ra đúng cách.

+3

Gỡ lỗi và phát hành có tệp đầu ra trong đó, không phải tệp nguồn, vì vậy chúng không được cam kết. Thư mục Properties có mã nguồn trong nó (AssemblyInfo.cs). Nếu bạn làm theo câu trả lời của Andrew, bạn sẽ ổn thôi. Tôi chỉ muốn gọi những điều đó một cách rõ ràng, vì bạn đã đề cập đến chúng. –

+1

@Merlyn: Cảm ơn bạn về mẹo! –

+0

Vâng, thực sự ... Đây là một mẹo tôi đã làm trong quá khứ. Tôi chỉ sao chép các tập tin mà tôi nghĩ rằng tôi cần cho một thư mục khác. Bắt đầu với các tệp csproj và sln của bạn và những tệp bạn thấy trong Solution Explorer (đảm bảo xem chi tiết tất cả các cách). Sau đó mở bản sao của giải pháp trong VS. Nếu nó xây dựng chính xác (không có lỗi, và tất cả các tập tin đầu ra là như nhau), thì đó là những tập tin bạn cần. Hãy chắc chắn rằng bạn a) ghi lại các tệp bạn đã sao chép hoặc b) tạo * hai * bản sao, một trong số đó bạn sử dụng để kiểm tra bản dựng sạch của mình, phần còn lại bạn không chạm vào và cuối cùng kiểm tra trong –

Trả lời

12

Bạn nên cam kết mọi thứ trừ tệp đầu ra của mình.

Điều này có nghĩa là cam kết mọi thứ trừ thư mục \bin\obj của bạn (và các tệp trong đó).

+1

Nếu tôi đặt 'trunk' của mình với một thư mục' src', tất cả điều này nên đi đến đó? –

+2

Có, nó nên. Điều tốt nhất để làm thực sự là kiểm tra một số dự án C# nguồn mở và xem cách chúng cấu trúc các dự án của chúng và các tệp mà chúng kiểm tra. Khi nghi ngờ, tốt nhất là bắt chước một người bạn tôn trọng. –

+2

những gì về .suo và .user những người không sử dụng trong kiểm soát nguồn – ScottS

3

Bạn chắc chắn không muốn cam kết xây dựng thư viện, không. Kiểm soát nguồn thực sự chỉ dành cho nguồn. Bây giờ, trong một cái gì đó giống như một thiết lập dự án .NET bạn cũng có thể xem xét (các) tệp dự án và (các) tệp giải pháp là nguồn, điều đó tốt. (Nhưng không phải là tập tin .user hoặc .suo, bỏ chúng ra.) Nhưng một nhóm chia sẻ các tệp nhị phân được biên dịch sẽ chạy vào các cơn đau đầu. Binaries nói chung là tốt, chẳng hạn như ví dụ tham chiếu DLL. Chỉ cần không phải là mã nhị phân được xây dựng dự định của mã.

Về cơ bản, cam kết mọi thứ bạn cần (và chỉ những gì bạn cần, ít nhất trong phạm vi phân cấp mã của dự án) để xây dựng một phiên bản hoàn chỉnh của dự án. Nhưng đừng cam kết đầu ra được xây dựng thực tế.

+0

'Chỉ cần không phải là mã nhị phân được xây dựng dự định của mã. ': Các tệp này có được đặt trong' trunk/build' không? –

+1

@SimpleCoder: Trong một thư mục như '/ build /', tôi sẽ tìm kiếm các kịch bản để xây dựng (thậm chí có thể triển khai) dự án, chẳng hạn như các tệp NAnt hoặc Rake (đó là chính chúng, nguồn). Có lẽ một số công cụ hỗ trợ xây dựng khác nữa. Nhưng hệ thống phân cấp kiểm soát nguồn nói chung không nên có đầu ra xây dựng của dự án ở bất cứ đâu. Những gì một nhà phát triển nhận được từ kiểm soát nguồn là những gì họ cần để xây dựng dự án, chứ không phải đầu ra được xây dựng. – David

+0

Ok, điều đó có ý nghĩa. Cảm ơn bạn đã giải thích rõ ràng cho tôi. –

9

Đối với sự phát triển bình thường tôi không cam kết:

  • bin
  • obj
  • * .user
  • * .suo

Mọi thứ khác tôi cam kết. Đối với một bản phát hành sẽ được gửi đến một khách hàng, tôi cũng cam kết các tệp nhị phân chính xác mà tôi đã gửi.

+0

+ * .sdf và * .opensdf – Svisstack

7

Bạn nên bao gồm mọi thứ cần thiết để xây dựng dự án, không phải bất kỳ thứ gì mà dự án tạo ra kể từ khi ai đó biên dịch lại nó sẽ có thể sản xuất chúng bằng cách biên dịch.

Trong trường hợp của một dự án C# đó là tập tin của bạn giải pháp (sln), tập tin của bạn dự án hoặc các tập tin ( csproj), và các tập tin của bạn nguồn (.cs) và bất kỳ tập tin tài nguyên ( Resx , * .bmp, * .png, v.v.). Điều đó không bao gồm các tệp trong thư mục Thuộc tính, vì các tệp đó chứa các cài đặt chung cho dự án của bạn.

Bạn không cam kết bất kỳ điều gì trong Gỡ lỗi/Phát hành, đó là kết quả đầu ra của việc xây dựng dự án của bạn. Theo quy tắc chung, bạn không cam kết tệp nhị phân (* .dll, * .exe).

Là một thử nghiệm nếu bạn đã cam kết đủ, hãy kiểm tra nguồn đến một thư mục khác trên máy tính của bạn và cố gắng xây dựng lại dự án.

+2

+1 cho "Là thử nghiệm nếu bạn đã cam kết đủ, hãy kiểm tra nguồn tới một thư mục khác trên máy tính của bạn và cố gắng xây dựng lại dự án" –

3

tôi cam kết tất cả mọi thứ ngoại trừ:

  • các \ thư mục bin
  • thư mục \ obj
  • .suo và .user file

Xem this question để biết chi tiết vào đó chút ngoái.

3

Đừng cam kết:

  • file nguồn và thư mục

  • Tài (XML, CSS, file ini ...)

  • nhị phân không tạo ra (hình ảnh, biểu tượng, âm thanh ..)

Đừng cam kết:

  • file Biên soạn (exe, dll, jar)

  • tạo file nguồn

  • cấu hình Máy tập tin cụ thể, tức là file có chứa nói filepaths vào một số tệp cục bộ trên máy tính của bạn có thể khác hoàn toàn địa điểm trên máy tính của tôi.

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