Cách tốt nhất để tôi bắt đầu sử dụng kiểm soát phiên bản trong dự án mã nguồn mở là gì?


10

Có ý kiến ​​cho rằng tôi lấy nguồn mở dự án của mình do quy mô của nó và thiếu kỹ năng, vì vậy tôi đã kiểm tra Google Code và bắt đầu thực hiện một dự án và bây giờ nó hỏi tôi có muốn dự án có Git, Mercurial hoặc Subversion không mã lưu trữ.

Tôi thậm chí không biết lưu trữ mã là gì và một tìm kiếm chỉ làm tôi bối rối hơn với các cuộc tranh luận giữa tất cả những điều này và điều này còn tệ hơn nữa khi Google Code đang hỏi tôi loại giấy phép nào tôi muốn.

Tôi nghĩ rằng tôi hoàn toàn không hiểu nguồn mở thực sự có nghĩa là gì, ai đó có thể tạo ra một mánh gian lận nhanh chóng của một giáo dân về tất cả những thứ này là gì không? Nhiều đánh giá cao.

Chỉnh sửa Đã có rất nhiều phản hồi tuyệt vời trên ba phiên bản lưu trữ mã này, nhưng tôi nghĩ rằng tôi đã thất bại trong việc truyền đạt câu hỏi thực sự: Về cơ bản tôi không biết công cụ mã nguồn mở này hoạt động như thế nào, tại sao tôi lại lưu trữ mã ở đâu đó như thế này ? Và điều đó có nghĩa là tôi phải loại bỏ trang web lưu trữ hiện tại của mình hay đây là một loại lưu trữ hoàn toàn khác? Điều gì xảy ra khi tôi biến trang web của mình thành nguồn mở, tôi có quyền gì, tôi có quyền gì. Làm thế nào nó hoạt động, mọi người chỉ đến và ném mã miễn phí cho tôi? Có lẽ đây là những câu hỏi ngu ngốc, và nếu đó là trường hợp thì tôi đoán tôi cần câu trả lời ngu ngốc, tôi thực sự không biết nguồn mở là gì, ngoại trừ khái niệm chia sẻ mã ...



đó là một chương trình trình chiếu tuyệt vời, tôi nghĩ nó đã giúp tôi nắm bắt được những điều cơ bản nhờ chia sẻ, bây giờ nó là những thứ chi tiết hơn khiến tôi không biết gì.

1
Đây thực sự là 2 câu hỏi, và cả hai có lẽ là trùng lặp. stackoverflow.com/questions/2303136/ cườngstackoverflow.com/questions/3859/iêu
sylvanaar

2
"Thiếu kỹ năng" nghe có vẻ là một lý do khủng khiếp để tạo ra thứ gì đó nguồn mở. Nếu bạn có một ý tưởng tuyệt vời, nhưng thiếu kỹ năng kỹ thuật, thì có lẽ. Tôi sẽ không đi đến nguồn mở cho đến khi tôi tìm thấy một đối tác có kỹ thuật, người sẵn sàng cam kết tạo ra một đoạn mã đầu tiên và ai muốn đi nguồn mở.
tripleee

Tripleee bạn có thể đề xuất một mạng lưới hoặc một cái gì đó có tính chất mà tôi có thể tìm ai đó để hợp tác không?
Nathan

Câu trả lời:


7

Tại sao tôi lại lưu trữ mã ở đâu đó như thế này?

Một điểm quan trọng của phát triển phần mềm nguồn mở là chia sẻ mã nguồn. Có một số cách để làm điều này, như đặt các tệp tar / zip trên máy chủ web hoặc ftp. Các dịch vụ như mã google (hoặc sourceforge.net, gitorious.org, bitbucket.org và nhiều dịch vụ khác) không cần phải chạy máy chủ của riêng bạn cho mục đích này.

Và điều đó có nghĩa là tôi phải loại bỏ trang web lưu trữ hiện tại của mình hay đây là một loại lưu trữ hoàn toàn khác?

Các dịch vụ này không phải là máy chủ web đa năng, nhưng chạy các dịch vụ rất chuyên biệt. Chúng không phải là trang chủ của một sản phẩm, mà là một bảng điều khiển dành cho nhà phát triển.

Với mã google bạn nhận được

  • một wiki
  • một con bọ
  • không gian tải tập tin thường xuyên
  • một máy chủ kiểm soát phiên bản

Tất nhiên bạn có thể thiết lập các phần mềm này trên một máy chủ web thông thường (công cụ kiểm soát phiên bản có thể khó, nhưng điều đó phụ thuộc nhiều vào chi tiết), nhưng lợi ích chính của việc sử dụng trình phát triển là bạn không cần phải cẩn thận của các hệ thống này cho riêng bạn. Hạn chế chính là bạn không có quyền kiểm soát về phần mềm nào được sử dụng trên máy chủ, bạn phải sống với những gì có sẵn trên máy chủ đó. Bạn cũng cần xem xét điều gì xảy ra nếu dịch vụ không hoạt động (ok, google không bao giờ thất bại) và nếu bạn có thể lấy dữ liệu từ máy chủ hiện tại sang máy chủ khác hoặc máy chủ của riêng bạn (nghĩ về sao lưu).

Điều gì xảy ra khi tôi biến trang web của mình thành nguồn mở, tôi có quyền gì,

Đây là một câu hỏi khó, vì nó phụ thuộc vào luật pháp của quốc gia nơi bạn sống.

Tôi cho đi những quyền gì.

Điều này phụ thuộc vào giấy phép bạn cấp cho sản phẩm. Nó có thể đi từ nguồn mở độc quyền (nghĩ về PGP) trong đó người dùng về cơ bản không thể làm gì với mã, ở đầu kia của thang đo là miền công cộng, nơi mọi người có thể làm bất cứ điều gì mình muốn.

Làm thế nào nó hoạt động, mọi người chỉ đến và ném mã miễn phí cho tôi?

Điều này rất khó xảy ra, vì sản phẩm của bạn cần đủ sự phổ biến để thu hút các nhà phát triển khác.

[...] Và bây giờ nó hỏi tôi có muốn dự án có lưu trữ mã Git, Mercurial hoặc Subversion không.

Đây là ba hệ thống kiểm soát phiên bản khác nhau, trong đó Subversion là một hệ thống tập trung, trong khi Git và Mercurial được phân phối.

Có những cuộc chiến tôn giáo về việc sử dụng cái nào, nhưng điểm chính là sử dụng nó. Xem http://martinfowler.com/bliki/VersionControlTools.html để biết thêm chi tiết.

Khi nào nên chọn Subversion:

  • Bạn có các tệp nhị phân, không thể dễ dàng hợp nhất và cần khóa-> sửa đổi-> cam kết-> mở khóa quy trình làm việc, hỗ trợ lật đổ
  • Bạn chỉ cần kiểm tra một phần của cấu trúc thư mục.

Có một phần mở rộng khóa cho đồng bóng, nhưng tôi không có kinh nghiệm với nó, và không thể nói nếu nó có thể sử dụng được.

Khi bạn không cần các tính năng trước đây, tốt hơn là sử dụng Mercurial hoặc Git. Cả hai đều có những ưu điểm sau so với Subversion:

  • nhanh (và với nhanh tôi thực sự có nghĩa là nhanh )
  • phân nhánh và hợp nhất dễ dàng (điều này trở nên tốt hơn vì Subversion> = 1.5, nhưng nó không giống nhau)
  • cam kết và xuất bản được tách rời, do đó bạn có thể làm việc mà không làm phiền đến một tính năng và xuất bản công việc khi hoàn thành
  • họ theo dõi toàn bộ trạng thái của thư mục sản phẩm
  • bạn nhận được một bản sao đầy đủ của toàn bộ lịch sử phiên bản khi bạn sao chép một kho lưu trữ từ xa
  • Số sửa đổi được bảo mật bằng mật mã, có nghĩa là ngay cả khi ai đó phá vỡ máy chủ, anh ta không thể đặt mã tại chỗ mà không thay đổi lịch sử sửa đổi

    • nhưng vì không ai kiểm tra các sửa đổi này, nên tính năng này thực tế không hiệu quả

9

Mã lưu trữ chính xác là như vậy - một nơi nào đó để lưu trữ (hoặc giữ) mã của bạn.

Git, Mercurial và Subversion là tất cả các công cụ kiểm soát nguồn bạn sử dụng để quản lý lịch sử mã của mình. Git và Mercurial là các hệ thống phân tán trong khi Subversion là thiết lập dựa trên máy chủ truyền thống hơn.

Hãy xem Wikipedia hoặc một số thứ như vậy và xem cái nào hấp dẫn bạn nhất. Cá nhân chúng tôi sử dụng Mercurial và nó hoạt động rất tốt cho chúng tôi.


6

Joel Spolsky đã viết một hướng dẫn tuyệt vời về Hg (Mercurial) và tôi tin rằng phần giới thiệu bao gồm Subversion, bao gồm cả lý do tại sao bạn nâng cấp lên Mercurial. Đọc nó, nó thực sự giúp tôi hiểu rất nhiều về Mercurial và DVCS nói chung.

Ồ, và khi bạn sẵn sàng lưu trữ, bạn có thể sử dụng Google Code, BitBucket , Github (với sự trợ giúp của tiện ích mở rộng tuyệt vời này ) hoặc các tiện ích khác.


Mercurial là một hệ thống tuyệt vời, nó đã giúp tôi vượt qua khỏi sự lật đổ chỉ sau vài phút sử dụng.
Jim ở Texas

3

Tôi sử dụng git, mà tôi thấy dễ quản lý hơn do kiểm soát phân tán. Hg cũng tốt cho mục đích đặc biệt này, nhưng tôi không thể cho bạn lời khuyên về nó, chưa bao giờ sử dụng nó. SVN là một hệ thống tập trung và do đó ít thực tế hơn, nhưng có thể đơn giản hơn một chút.

Nguồn mở về cơ bản có nghĩa là bạn cung cấp cho bất kỳ ai khả năng sử dụng công việc của bạn và xây dựng dựa trên nó. Bạn có thể đặt ranh giới của việc sử dụng đó: GPL có nghĩa là người dùng phải biến công việc bổ sung của mình thành nguồn mở, LGPL có nghĩa là anh ta không, chẳng hạn.


2

Subversion sẽ là lựa chọn dễ dàng nhất vì đó là một VCS. Git và Mercurial là các hệ thống DVCS. Chúng hiện đại hơn và mạnh mẽ hơn nhưng khó hiểu hơn. Sử dụng một giao diện người dùng như TortoiseSVN hoặc TortoiseHG (cho Mercurial aka HG) cũng thực sự hữu ích.

Nếu phần mềm của bạn là một chương trình độc lập, bạn có thể sử dụng GPL hoặc thực sự mở nó bằng giấy phép BSD. Nếu dự án của bạn là một thư viện mà người khác sẽ liên kết với việc sử dụng LGPL hoặc BSD một lần nữa; nhưng không sử dụng GPL.

[biên tập]

Đối với động lực ban đầu của bạn để tìm nguồn cung ứng phần mềm: Thật không may, chỉ làm phần mềm nguồn mở không có nghĩa là bạn sẽ có được một dòng lao động tự do tài năng. Có hàng trăm ngàn dự án nguồn mở. Chỉ một tỷ lệ nhỏ trong số họ có các thành viên đóng góp tích cực. Những lý do khiến các dự án này thành công hay không cũng đa dạng như lý do tại sao các doanh nghiệp thành công và thất bại. Nếu bạn muốn trở thành một lập trình viên giỏi và sản xuất phần mềm tốt, bạn sẽ phải dành nhiều thời gian để học, viết mã và giao tiếp với những người khác trên các trang web như StackOverflow.


1
Tại sao bạn nói rằng svn là dễ nhất? Xin biện minh cho tuyên bố này.

1
@Richard: Tôi nghĩ rằng anh ta có nghĩa là dễ dàng hơn để thiết lập và sử dụng cho sử dụng cơ bản, ít nhất là tôi đồng ý với nhận thức đó. Tôi không đồng ý với ý kiến ​​rằng thư viện của bạn không nên sử dụng GPL, đó thực sự là một lập trường chính trị.
Kheldar

Sử dụng GPL cho thư viện nếu bạn muốn áp đặt một số hạn chế nhất định đối với việc sử dụng nó. Sử dụng LGPL nếu bạn muốn áp đặt ít hạn chế hơn.
Keith Thompson

0

Dường như với tôi rằng trong khi hầu hết mọi người ở đây đang trả lời như thế nào , thì không ai thực sự trả lời được tại sao trong câu hỏi của bạn.

Một trong những dự án nguồn mở đầu tiên tôi trải nghiệm là dự án Fractint tuyệt vời , dự án này được phát triển bởi Tập đoàn Stone Soup , người được truyền cảm hứng từ câu chuyện dân gian súp đá cũ .

Đối với tôi, điều này gói gọn tinh thần của nguồn mở tốt hơn bất kỳ câu thần chú Stallman nào hay thậm chí là Tuyên ngôn GNU gốc . Đó là một minh chứng cho sức mạnh của cộng đồng đó rằng Fractint vẫn đang được phát triển 23 năm sau khi ngọn lửa được thắp sáng dưới cái nồi nấu mã đặc biệt đó .


0

Nguồn mở có nghĩa là bất kỳ ai cũng có thể đọc, sao chép, sửa đổi và phân phối mã của bạn. Bạn nên có một sự hiểu biết vững chắc về ý nghĩa của việc này trước khi bạn tiến hành. Có lẽ bạn nên đọc một cuốn sách hoặc ít nhất là duyệt các bài viết trên Wikipedia về chủ đề này và / hoặc http://opensource.org/ cho đến khi bạn cảm thấy bạn nắm được khái niệm này.

(Cuốn sách O'Reilly Nguồn mở http://oreilly.com/openbook/opensource/book/index.html rất hữu ích nhưng có lẽ không chính xác những gì bạn đang tìm kiếm.)

Những gì hệ thống kiểm soát mã nguồn để sử dụng là hoàn toàn quan trọng thứ cấp. Bạn có thể sao chép / dán mã của bạn trên một trang web và được thực hiện. Đã nói rằng, kiểm soát phiên bản là quan trọng, và một phương tiện tốt để hạ thấp thanh để các nhà phát triển đóng góp. Bất kỳ tùy chọn nào được cung cấp bởi Google Code đều ổn; đi với câu hỏi bạn thích, hoặc có thể trì hoãn câu hỏi cho đến khi bạn có thể hỏi những người đóng góp của mình xem họ muốn sử dụng câu hỏi nào.


0

Làm cho mã hoặc dự án của bạn thành nguồn mở có nghĩa là mọi người đều có thể lấy nó và sửa đổi nó theo (những) anh ta muốn. Điều này phụ thuộc vào loại giấy phép bạn chọn sử dụng, nhưng nói chung nguồn mở có nghĩa là mã nguồn có sẵn cho bất kỳ ai để tải xuống, sửa đổi và sử dụng khi họ muốn.

Dù sao, mã này cần phải được tiếp cận bởi những người khác để có được nó.

Lấy mã của bạn đến một kho lưu trữ trực tuyến công cộng như GitHub là cách tốt nhất để làm điều đó. Đầu tiên, mã của bạn hiện có thể truy cập được. Sau đó, vì các dịch vụ như vậy cũng cung cấp Kiểm soát phiên bản, mã của bạn được tổ chức theo dự án. Bạn có thể theo dõi những thay đổi mà bạn và những người khác thực hiện. Vì nó cũng cho phép phân nhánh (tách) dự án thành các dự án khác nhau, bạn có thể theo dõi tất cả các phiên bản khác nhau mà người khác làm bằng mã của bạn.

Điều này cũng đảm bảo mã của bạn được lưu trữ ở một nơi an toàn, bạn không phải lo lắng về việc nó bị mất bởi một đĩa cứng bị lỗi trên máy tính của bạn chẳng hạn. Và khi bạn muốn làm việc tại đó, bạn có thể làm việc từ bất kỳ nơi nào vì mã của bạn đang trực tuyến, bạn có thể tìm thấy nó ở bất cứ đâu.

Nếu sau đó bạn quyết định đã đến lúc thể hiện mã của mình với mọi người, thì đó chỉ là vấn đề gửi liên kết đến kho lưu trữ dự án trực tuyến của bạn. Đó là một công nghệ mà mọi người đang làm quen, vì vậy vì mọi người đều biết, nên dễ dàng hơn để tải xuống, đăng tin nhắn, tạo các phiên bản khác nhau, v.v.

Nó giống như một tiêu chuẩn chung để làm mọi thứ, thông lệ.

Một số liên kết bạn có thể thấy hữu ích để giải thích thêm về nguồn mở:


-6

Về hệ thống kiểm soát phiên bản, tôi sẽ nói rằng bạn nên gắn bó với giải pháp thay thế được sử dụng nhiều nhất và gần đây hơn: Đó là: "Git". Mercurial ít phổ biến hơn, và SVN đã cũ, chậm và tập trung. Với GIT, bạn sẽ được hưởng lợi từ một hệ thống kiểm soát phiên bản hiện đại và phổ biến. Thực tế không có gì để mất.

Các nguồn (lấy lại mức độ phổ biến của DVCS):

/programming/tagged/git ~ 10k câu hỏi /programming/tagged/mercurial ~ 3k câu hỏi

http://www.googlefight.com/index.php?lang=en_GB&word1=git&word2=mercurial

11700000 kết quả so với

1580000 kết quả

Về giấy phép: Có lẽ bạn nên xem xét những thứ phổ biến nhất: GLP, MIT, LGPL, BSD và chọn một thứ phù hợp với dự án của bạn hơn.


7
Mercurial không phải là độc quyền ... nó là nguồn mở chính xác như Git!
Christian Specht

4
Fanboy trả lời với lập luận sai một phần.
Oben Sonne

1
"Được sử dụng nhiều nhất" - vui lòng cung cấp tài liệu tham khảo cho nguồn thông tin đó của bạn.
sylvanaar

Xin lỗi mọi người .. Đó chỉ là nhận thức của tôi về mọi thứ: Tôi đoán rằng Git được sử dụng nhiều hơn Mercurial và tôi biết rằng SVN đã cũ, chậm và tập trung ... Tôi tự hỏi liệu nhận xét của bạn có ít bình luận về fanboy hơn so với cái gọi là của tôi không fanboy-trả lời. Thôi nào, git hub sử dụng git, kernel linux sử dụng git, mọi dự án trong bộ phận của tôi đều sử dụng git ...
Pedro Rolo

2
Có lẽ sự phong phú của các câu hỏi liên quan đến Git cũng minh họa rằng nó khó sử dụng hơn? Một số người đã sử dụng dữ liệu tương tự khi điều tra các khung phát triển web nào là 'phổ biến nhất' trong đó điểm giống nhau được nêu ra (nhận xét về những điểm không chính xác).
Tim Post
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.