2009-09-19 16 views
50

Điều này có vẻ giống như một điều gì đó mà tôi nên biết bây giờ, nhưng vì bất kỳ lý do nào tôi không biết. Tôi cũng không có nhiều may mắn tìm kiếm về chủ đề này.Nhiều lập trình viên trong phát triển phần mềm. Làm cách nào để chúng tôi làm việc trên cùng một mã và đảm bảo mã luôn được cập nhật?

Một người bạn và tôi đang bắt đầu một dự án đơn giản cùng với nhau, cả hai chúng tôi đều rất trẻ trong thế giới lập trình và muốn thực hiện một dự án giáo dục đơn giản cho thời gian rảnh ... Câu hỏi của tôi là, chúng tôi muốn để có thể làm việc trên cùng một dự án và các tệp được cập nhật tương ứng, mà không phải chúng tôi liên tục phải chia sẻ tệp với nhau. Tôi chắc chắn rằng có phần mềm tồn tại chỉ dành cho mục đích này, hoặc một số loại khách hàng chia sẻ mà chúng tôi có thể sử dụng. Vấn đề là, tôi không biết bắt đầu từ đâu.

Một số lời khuyên đơn giản về cách thức, hoặc những gì để sử dụng để giúp dự án này di chuyển dọc theo trơn tru hơn sẽ là tuyệt vời. Và đó là một phần lớn lý do tại sao chúng tôi đang làm điều đó ngay từ đầu.

Cập nhật:

Sau khi một số nghiên cứu tôi định cư trên Rùa SVN. Các đơn giản nhấp chuột phải addon cho các cửa sổ để cập nhật/cam kết tập tin vào máy chủ lưu trữ của bạn là rất dễ dàng và thân thiện với người ..

Làm rõ bổ sung

Đó là khá một vài năm kể từ khi tôi hỏi câu hỏi này, và tôi đã học được rất nhiều! Nếu bạn đang ở đây với cùng một câu hỏi, tôi sẽ khuyên bạn nên nghiên cứu "kiểm soát nguồn". Ban đầu tôi đã chấp nhận một câu trả lời cho thấy lật đổ, và thậm chí đã tuyên bố rằng tôi đã giải quyết trên "Tortoise SVN" khi khách hàng của tôi kết nối với subversion. Giống như tất cả những thứ chúng ta thích nghi khi chúng ta học, và điều khiển nguồn chính tôi sử dụng bây giờ là Git. Nó có một đường cong học tập lớn hơn, nhưng tôi có thể thành thật nói rằng nó mạnh hơn rất nhiều.

+7

+1 - câu hỏi hay dành cho nhà phát triển mới đang yêu cầu! – David

+3

Dù bạn làm gì, đừng đi với Visual SourceSafe - nó không thể so sánh với các lựa chọn thay thế nguồn mở. http://www.codinghorror.com/blog/archives/000660.html –

+8

Thuật ngữ tôi cần là Kiểm soát nguồn. Cảm thấy ngớ ngẩn hỏi câu hỏi, nhưng tôi đã tìm kiếm mà không biết thuật ngữ trong khoảng một giờ mà không có nhiều may mắn. Cuối cùng hút niềm tự hào của tôi và quyết định hỏi. :) Vui vì tôi đã làm .. – jsmith

Trả lời

43

Âm thanh như bạn cần một số kiểm soát nguồn! Bạn đã nhìn vào Subversion (SVN) chưa? Có một khách hàng Windows tuyệt vời cho nó được gọi là TortoiseSVN. Cả hai đều miễn phí & nguồn mở.

Bạn sẽ thiết lập máy chủ Subversion trên một trong các máy của bạn hoặc trên máy chủ web ở đâu đó. Sau đó, cả hai bạn cam kết các thay đổi của bạn với máy chủ theo chu kỳ bình thường và máy chủ quản lý những thứ như sửa đổi, nhận xét mà bạn đính kèm vào cam kết v.v. Với khách hàng, bạn có thể thực hiện những việc như xem sự khác biệt giữa các sửa đổi & thay đổi hợp nhất (tự động hoặc bằng tay) trong các tệp. Nó cũng làm cho nó đơn giản để thêm các dev khác vào dự án của bạn, chỉ cần cung cấp cho họ quyền truy cập vào máy chủ Subversion của bạn. Có SVN plugins for EclipseVisual Studio hoặc bạn có thể sử dụng TortoiseSVN có thể chạy độc lập trên dòng lệnh và tích hợp với vỏ Windows (xem bên dưới).

TortoiseSVN shell integration http://olex.openlogic.com/wazi/wp-content/uploads/2009/03/create_repo_tortoisesvn.png

Điều tôi thích nhất về TortoiseSVN là nó là hoàn toàn ngôn ngữ hoặc IDE độc lập và tôi có thể sử dụng nó cho các dự án Java ra khỏi Eclipse, dự án NET từ VS2008, hoặc các công cụ phát triển trình điều khiển trong C/C++.

Lưu ý rằng SubWCRev công cụ mà tàu với TortoiseSVN cũng cho thấy nhiều a COM interface cho phép bạn làm những thứ mát như programatically kiểm tra xem ai đã cam kết cuối cùng và khi nào, là những gì các số phiên bản mới nhất vv Tôi đề cập đến điều này bởi vì có isn' t rất nhiều thông tin xung quanh về điều này ngoài các tài liệu TortoiseSVN, và nó đã thực sự hữu ích cho tôi gần đây viết một add-in VS2008 tôi sử dụng trên các dự án .NET của tôi để tự động đồng bộ số sửa đổi và số xây dựng gia tăng.

Một số trang web cung cấp quyền truy cập kho SVN miễn phí cho các dự án nguồn mở (hoặc truy cập trả tiền cho các sản phẩm thương mại/nguồn đóng), chẳng hạn như Google CodeSourceforge. Các kho lưu trữ trực tuyến này cũng có thể thực sự hữu ích cho công việc của dự án nếu đặc biệt nếu bạn là sinh viên làm việc trong một dự án nhóm.

+10

+1: Lời khuyên đơn giản và hoàn toàn cần thiết. GIT là một giải pháp thay thế. –

+2

Ngoài ra còn có addins cho nhiều IDE cho phép hoạt động trên kho lưu trữ trực tiếp từ bạn đang làm việc.Tôi sử dụng Visual Studio với AnkhSVN như một addin. – Trainee4Life

+1

+1 - mô tả ngắn gọn, đẹp mắt và cũng là lựa chọn ưa thích của tôi trong điều khiển nguồn – David

3

Kiểm soát nguồn nghiên cứu. Dưới đây là một giới thiệu tốt đẹp:

http://www.ericsink.com/scm/source_control.html

Nhiều có thể được lưu trữ trực tuyến miễn phí hoặc một khoản phí nhỏ để bạn và đối tác của bạn có thể cộng tác qua internet trừ khi bạn đang ở trong một tình huống mà bạn có một máy chủ chia sẻ thì bạn có thể đi tuyến đường đó với nhiều khách hàng kiểm soát nguồn (như SVN với rùa và như vậy). Nếu không, GitHub (không phải là duy nhất) là hệ thống kiểm soát nguồn phân tán. Có thể là một chút áp đảo lúc đầu nhưng nó là một ví dụ.

9

Loại phần mềm bạn đang tìm kiếm là kiểm soát nguồn (còn được gọi là kiểm soát sửa đổi). Đó là một chủ đề rất lớn, nhưng tôi sẽ bắt đầu bằng cách tìm kiếm nó trong Wikipedia, và sau đó tìm kiếm một loại điều khiển nguồn hoạt động với ngôn ngữ và công cụ bạn đang sử dụng. (Ví dụ: Team Foundation Server như một tùy chọn cho Visual Studio, SVN cho một giải pháp tốt xung quanh, v.v.)

Cuối cùng bạn sẽ yêu cầu các gợi ý về công cụ kiểm soát nguồn nào để sử dụng. Đối với nhóm của chúng tôi, chúng tôi sử dụng SVN (aka SubVersion), một giải pháp nguồn mở miễn phí rất tốt, hoạt động với hầu hết mọi thứ.

Wikipedia liên kết:

http://en.wikipedia.org/wiki/Revision_control

2

"hoặc một số loại khách hàng chia sẻ rằng chúng ta có thể sử dụng"

kiểm soát nguồn có lẽ là cách tiếp cận chính thức đề nghị, tuy nhiên cách đơn giản nhất để chia sẻ tập tin này là để cài đặt cái gì đó như DropBox.

Bạn đăng ký tài khoản 2GB miễn phí với tên người dùng/mật khẩu được chia sẻ giữa bạn và bạn bè của bạn. Sau đó, bạn cài đặt ứng dụng DropBox trên cả máy của bạn và PC của bạn bè và sử dụng tài khoản được chia sẻ.

Khi chạy Dropbox tạo thư mục trong Tài liệu của tôi có tên "Hộp thư thả của tôi". Bây giờ, mọi thứ bạn làm theo thư mục này, chẳng hạn như tạo, chỉnh sửa, xóa tệp và thư mục, sẽ được tự động đồng bộ hóa với thư mục "Hộp thư thả của tôi" trên PC bạn bè của bạn và ngược lại. Truy cập Internet là tất cả những gì cần thiết.

Bạn cũng nhận được lịch sử và sửa đổi tệp của mình, để bạn có thể khôi phục và khôi phục về phiên bản cũ hơn nếu cần. Nếu cả hai bạn cùng làm việc trên cùng một tệp, giống như kiểm soát nguồn, bạn sẽ cần phải hợp nhất các tệp theo cách thủ công, nhưng Dropbox lưu "bản sao xung đột" trong trường hợp này.

Tôi đã sử dụng Dropbox bản thân mình trong gần một năm và tôi rất hài lòng với tính năng dễ sử dụng. Tôi không làm việc cho Dropbox hoặc có bất cứ điều gì để làm với họ khác sau đó là một người dùng hạnh phúc.

A "thật" hệ thống kiểm soát nguồn chủ yếu cung cấp cho bạn tự động sao lưu, khả năng trở lại với phiên bản trước và managmenet của nhiều người dùng chỉnh sửa mã nguồn, nhưng như vậy không Dropbox.

+0

Có, chia sẻ thông qua một dịch vụ như vậy có thể là có thể, nhưng nếu một người muốn giáo dục chính mình như một lập trình viên, đây là lời khuyên xấu. Btw, không, điều khiển nguồn "thực" cung cấp cho bạn sao lưu tự động. Điều hoàn toàn khác. Nguyên nhân của nhiều thay đổi, xem xét thay đổi dễ dàng, phân nhánh, gắn thẻ và hợp nhất là rất cần thiết. – gimpf

+0

@gimpf, người ta biết rõ rằng người ta nên sử dụng "kiểm soát nguồn thích hợp" cho những người phát triển thực sự. Một người chỉ đang đợi ai đó làm chính xác loại bình luận này. Ngoài ra, người ta cho rằng bạn hiểu sai ý nghĩa của "tự động sao lưu". – Ash

+0

guys đi dễ dàng trên 'một' :) chúng tôi đã không tất cả đi đến trường học ngữ pháp .. – Darknight

7

Nếu bạn sẵn sàng tìm hiểu một chút về Git thì bạn có thể lưu trữ công việc của mình tại github.com và cả hai đều làm việc trên nó một cách riêng biệt.

3

trong 6 tháng qua, tôi đã chuyển sang git và khá hài lòng với nó. nhưng nói chung, cvs | svn | git là các SCM nguồn mở phổ biến nhất (quản lý mã nguồn) và bất kỳ một trong số chúng sẽ có thể đáp ứng nhu cầu của bạn.

8

Câu trả lời đơn giản là bạn muốn có một số loại phần mềm kiểm soát sửa đổi.

Câu trả lời phức tạp hơn là kiểm soát sửa đổi sẽ dễ dàng hơn rất nhiều so với sử dụng nó, hoặc sử dụng nó tốt.

Nếu bạn bắt đầu, hãy chọn một công cụ dễ sử dụng là chìa khóa. Subversion là một lựa chọn tốt vì nó có một số triển khai GUI tuyệt vời, nhưng vẫn cung cấp nhiều quyền lực và tính linh hoạt khi bạn bắt đầu tham gia vào nó ở cấp độ dòng lệnh.

Tuy nhiên, hệ thống kiểm soát sửa đổi bạn chọn ít quan trọng hơn là nuôi dưỡng thói quen sử dụng sẽ cho phép bạn thực sự tận dụng các công cụ của mình. Các nhà phát triển có kinh nghiệm sử dụng các công cụ tốt nhất hiện có vẫn có thể bị rối tung trong kho lưu trữ nguồn kém hoặc được quản lý kém.

Một số điều cần suy nghĩ về:

  • Nếu bạn không cập nhật repo của bạn thường xuyên và liên tục như một vấn đề thường xuyên, nó sẽ không được sử dụng nhiều khi bạn cần nó.

  • Tìm hiểu những gì người khác nói về thực tiễn tốt nhất là hữu ích ở mức độ, nhưng đôi khi yếu tố quan trọng nhất đơn giản là có là tiêu chuẩn và mọi người liên quan đều hiểu và đồng ý với điều đó.

  • Tổ chức repo phụ thuộc nhiều vào đường dẫn.
    Thiết lập và đổ nước mắt là giá rẻ khi dự án của bạn bắt đầu. Đừng sợ phải cầu kỳ về cơ cấu tổ chức ngay từ đầu. Nó có thể là thời gian duy nhất bạn có thể.

4

Có hai điều quan trọng khi hai hoặc nhiều nhà phát triển làm việc trên cùng một dự án. Đầu tiên là các công cụ được sử dụng, và thứ hai là quy trình được đồng ý.

Công cụ sử dụng, trong trường hợp của bạn rất đơn giản. Chọn hệ thống kiểm soát phiên bản và tìm hiểu cách sử dụng nó. Lựa chọn rất nhiều, nhưng yếu tố quan trọng nhất là hỗ trợ công cụ. Ví dụ, loại công cụ Tortuise là công cụ tuyệt vời cho người dùng windows (TortuiseSVN, ToruiseCVS, TortuiseHg) vì chúng tích hợp vào vỏ cửa sổ và cho phép bạn xem điều gì đã xảy ra với mỗi tệp và thư mục bằng cách áp dụng các biểu tượng khác nhau trên chúng (dấu chấm than màu đỏ để thay đổi) màu xanh lá cây ok và vv ..).

Phần thứ hai, quan trọng nhất là quy trình. Hầu hết các đội phá vỡ trên đó, và phải mất thời gian để áp dụng một và cho tất cả để làm theo nó. Bạn, và đối tác của bạn phải đồng ý về cùng một quá trình và cả hai bạn cần phải làm theo nó.

Quy trình sẽ bao gồm tổ chức thư mục cơ bản, những gì sẽ được đặt và vị trí, cách thức và thời điểm bạn sẽ thực hiện/thanh toán và cách thức mã bạn sẽ đặt vào.

Theo tôi có hai điều quan trọng ở đây:

  1. Mã trong kho phải luôn xây dựng thể, đối với các chàng trai khác để tiếp tục làm việc mà không vấn đề

  2. Mọi người đều cần phải biết phải đặt gì và ở đâu, ví dụ một thư mục sẽ được chọn cho mã nguồn, và một cho cơ sở dữ liệu, vv

Dưới đây là một ví dụ về một quá trình đơn giản:

  1. Cài đặt một máy chủ lưu trữ (svn, mercuiral, vv). Đối với bạn sự khác biệt duy nhất là công cụ hỗ trợ.
  2. Thống nhất về một cấu trúc kho dữ liệu chung (Documents, Nguồn, Extras)
  3. Cập nhật vào đầu mỗi ngày
  4. Commit thường, trước mỗi hành cập nhật từ các kho
  5. Vào cuối mỗi ngày cam kết
0

Đây là câu hỏi rất đơn giản nhưng quan trọng. Đây là câu hỏi về Phiên bản mã nguồn. Kinh nghiệm của riêng tôi sẽ bảo tôi tránh các giải pháp Dropbox và Co chính thống vì chúng không thân thiện với mã nguồn.

Nhìn vào bài viết của bạn mà bạn muốn:

  1. đơn giản với việc thiết lập dễ dàng và sử dụng
  2. Chia sẻ mã (duyệt và sửa đổi)
  3. Thấy người đã sửa đổi những gì và khi

Tôi muốn giới thiệu Git vì câu trả lời cho cả ba với công cụ cơ sở Git và Github.com hoặc Bitbucket.org.

CVS và SVN nặng và không có giao diện web rất tiện lợi như Github hoặc Bitbucket. Và mặc dù tôi là một fan hâm mộ CVS tuyệt vời và đã chuyển sang SVN, tôi phải thừa nhận rằng họ đang nếm thử rất cũ so với Git mới và các hệ thống thích.