オープンソースプロジェクトでバージョン管理の使用を開始するための最良の方法は何ですか?


10

プロジェクトのサイズとスキル不足のため、プロジェクトをオープンソースにすることを提案されたので、Google Codeをチェックアウトしてプロジェクトの作成を開始したところ、プロジェクトにGit、Mercurial、またはSubversionを含めるかどうかを尋ねられます。コードホスティング。

コードホスティングとは何なのかさえわかりません。検索を行うと、これらすべての間の議論がさらに混乱し、Google Codeがどのタイプのライセンスが必要か尋ねてきたため、事態はさらに悪化しました。

私はオープンソースが実際に何を意味するのか完全に理解していないと思います、誰かがこれが何であるかについて簡単に素人のチートシートを作成できますか?大変感謝いたします。

編集これらの3つのバージョンのコードホスティングには多くの素晴らしい反応がありましたが、本当の質問を伝えることができなかったと思います。 ?そして、それは私が現在のホスティングからサイトを外さなければならないことを意味しますか、それともこれはまったく異なるタイプのホスティングですか?私のサイトをオープンソースにするとどうなるか、どのような権利があるか、どのような権利を与えるか。それはどのように機能しますか?人々はただ来て無料で私にコードを投げますか?おそらくこれらは愚かな質問であり、その場合、私は愚かな答えが必要だと思いますが、コードを共有するという概念を除いて、私はオープンソースが何であるかを真剣に知りません...



それは素晴らしいスライドショーでした。共有のおかげで基本的な知識を理解するのに役立ちました。今では、より詳細なものが手がかりがありません。

1
これは実際には2つの質問であり、おそらく両方が重複しています。stackoverflow.com/questions/2303136/...、およびstackoverflow.com/questions/3859/...
sylvanaar

2
「スキルの欠如」は、何かをオープンソースにするための恐ろしい理由のように聞こえます。素晴らしいアイデアはあるが、技術的なスキルが不足している場合は、そうでしょう。コードの最初のカットを作成することを約束する準備ができており、オープンソースに移行したい技術的に熟練したパートナーを見つけるまで、私はオープンソースに移行しませんでした。
tripleee

Tripleeeは、私がパートナーとなる誰かを見つけることができるようなネットワークまたはそのような性質を提案できますか?
ネイサン

回答:


7

なぜこのような場所でコードをホストするのですか?

オープンソースソフトウェア開発のポイントは、ソースコードを共有することです。これを行う方法はいくつかあります。たとえば、WebサーバーまたはFTPサーバーにtar / zipファイルを配置します。googleコード(またはsourceforge.net、gitorious.org、bitbucket.org、その他多数)のようなサービスは、この目的のために独自のサーバーを実行する必要を取り除きます。

そして、それは私が現在のホスティングからサイトを外さなければならないことを意味しますか、それともこれはまったく異なるタイプのホスティングですか?

これらのサービスは汎用のWebホストではなく、非常に特殊なサービスを実行します。これらは製品のホームページではなく、開発者用ダッシュボードです。

あなたが得るグーグルコードで

  • ウィキ
  • バグトラッカー
  • 通常のファイルダウンロードスペース
  • バージョン管理サーバー

もちろん、通常のWebサーバーでこれらのソフトウェアをセットアップすることはできます(バージョン管理は難しいかもしれませんが、詳細に大きく依存します)が、開発ホスターを使用する主な利点は、注意する必要がないことです。あなた自身のためのこれらのシステムの。主な欠点は、サーバーで使用されているソフトウェアを制御できないことです。そのホストで使用可能なソフトウェアを使用する必要があります。また、サービスが停止した場合(ok、googleが失敗することはありません)、および現在のホストから別のホストまたは独自のサーバーにデータを取得できるかどうか(バックアップを考える)も考慮する必要があります。

サイトをオープンソースにするとどうなりますか?

これはあなたが住んでいる国の法律に依存しているので、難しい質問です。

どのような権利を譲渡しますか。

これは、製品に付与するライセンスによって異なります。それは、ユーザーが基本的にコードで何もできないプロプライエタリなオープンソース(PGPのことを考える)から行くことができ、スケールの反対側はパブリックドメインであり、誰もが自分のやりたいことをすべて行うことができます。

それはどのように機能しますか?人々はただ来て無料で私にコードを投げますか?

あなたの製品が他の開発者を引き付けるために十分な人気を必要とするので、これは起こりそうにありません。

[...]そして今、私はプロジェクトにGit、Mercurial、またはSubversionコードのホスティングを含めるかどうかを尋ねています。

これらは3つの異なるバージョン管理システムであり、GitとMercurialは配布されていますが、Subversionは集中管理されています。

どちらを使うかという宗教的な戦争がありますが、主なポイントはそれを使うことです。詳細については、http://martinfowler.com/bliki/VersionControlTools.html参照してください。

Subversionを選択するタイミング:

  • 簡単にマージできないバイナリファイルがあり、サブバージョンがサポートするロック->変更->コミット->ロック解除ワークフローが必要ですversion
  • ディレクトリ構造の一部のみをチェックアウトする必要があります。

mercurial用のロック拡張機能がありますが、これまでの経験はなく、使用できるかどうかはわかりません。

前者の機能が必要ない場合は、MercurialまたはGitを使用することをお勧めします。どちらもSubversionに比べて次の利点があります。

  • 速い(そして速いとは本当に速いという意味です
  • 簡単な分岐とマージ(これはSubversion 1.5以降で改善されましたが、同じではありません)
  • コミットと公開は分離されているため、機能に支障をきたすことなく作業でき、完了したら公開できます
  • 製品ディレクトリ全体の状態を追跡します
  • リモートリポジトリを複製すると、バージョン履歴全体の完全なコピーが得られます
  • 暗号で保護されたリビジョン番号。つまり、誰かがサーバーに侵入しても、リビジョン履歴を変更せずにコードを配置することはできません。

    • しかし、誰もこれらのリビジョンをチェックしないため、この機能は実質的に効果的ではありません

9

コードホスティングはまさにそれです-あなたのコードをホストする(または保持する)どこか。

Git、Mercurial、Subversionはすべて、コード履歴の管理に使用するソース管理ツールです。GitとMercurialは分散システムですが、Subversionはより伝統的なサーバーベースのセットアップです。

ウィキペディアなどを見て、どれが最も魅力的かを確認してください。個人的にはMercurialを使用しており、非常にうまく機能します。


6

Joel SpolskyはHg(Mercurial)についての優れたチュートリアルを書いており、 Metrocurialにアップグレードする理由を含め、導入セクションがSubversionをカバーしていると思います。それを読んでください、それは私がMercurialとDVCSについて一般に多くを理解するのに本当に役立ちました。

そして、ホストする準備ができたら、Google Code、BitBucketGithubこの優れた拡張機能の助けを借りて)などを使用できます。


Mercurialは優れたシステムであり、ほんの数分使用しただけでsubversionから私を取り戻しました。
テキサス州

3

私はgitを使用していますが、分散制御により管理が簡単です。Hgはこの特定の目的にも適していますが、一度も使用したことがないので、アドバイスはできません。SVNは一元化されたシステムであるため、実用性は低くなりますが、少しシンプルになる可能性があります。

オープンソースとは、基本的には、誰でも自分の作品を使用し、その上に構築する能力を与えることを意味します。その使用の境界を設定できます。たとえば、GPLはユーザーが追加作業をオープンソースにする必要があることを意味し、LGPLはそうでないことを意味します。


2

SubversionはVCSなので、最も簡単なオプションです。GitとMercurialはDVCSシステムです。それらはより近代的で強力ですが、理解するのが難しいです。TortoiseSVNやTortoiseHG(Mercurial、別名HGの場合)などのフロントエンドを使用することも非常に役立ちます。

ソフトウェアがスタンドアロンプ​​ログラムである場合は、GPLを使用するか、BSDライセンスで実際に開くことができます。プロジェクトが他の誰かがリンクするライブラリである場合は、LGPLまたはBSDを使用します。GPLは使用しないでください。

[編集]

ソフトウェアをオープンソーシングする本来の動機については、残念ながら、ソフトウェアをオープンソースにするだけでは、才能のある無料の労働力が流入するわけではありません。何十万ものオープンソースプロジェクトがあります。彼らのごく一部だけがアクティブな貢献メンバーを持っています。これらのプロジェクトを成功させるかどうかの理由は、ビジネスが成功し失敗する理由と同じくらいさまざまです。優れたプログラマーになり、優れたソフトウェアを作成したい場合は、StackOverflowなどのサイトで、学習、コードの記述、他のユーザーとのコミュニケーションに多くの時間を費やす必要があります。


1
なぜsvnが最も簡単だと言うのですか?この声明を正当化してください。

1
@Richard:彼は、基本的な使用法の設定と使用が少し簡単であることを意味すると思います。少なくとも私はその同意に同意します。あなたの図書館がGPLを使うべきではないという考えには同意しません。それは実際には政治的なスタンスです。
Kheldar 2011

ライブラリの使用に特定の制限を課したい場合は、ライブラリにGPLを使用します。制限を少なくしたい場合は、LGPLを使用します。
キーストンプソン

0

ここにいるほとんどの人がどのように答えているの私には思えますが、あなたの質問で誰も本当にその理由に答えていません。

私が最初に経験したオープンソースプロジェクトの1つは、素晴らしいFractintプロジェクトでした。これは、古い石のスープの民話に触発された石のスープグループによって開発されました。

私にとって、これは、オープンソースの精神を、ストールマンの暴言やオリジナルのGNUマニフェストよりもうまくカプセル化しています。そのコードの特定の調理鍋の下で火がつけられてから23年後フラクティントがまだ開発されていることは、そのコミュニティの強さの証です


0

オープンソースとは、誰でもコードを読み取り、コピー、変更、および配布できることを意味します。先に進む前に、これの影響をしっかりと理解しておく必要があります。おそらく、本を読んだり、少なくともトピックに関するWikipediaの記事やhttp://opensource.org/を閲覧して、概念が理解できると感じるでしょう。

(O'Reillyの著書Open Sources http://oreilly.com/openbook/opensources/book/index.htmlは役に立ちますが、あなたが探しているものではないかもしれません。)

どのソースコード管理システムを使用するかは、完全に2番目に重要です。コードをWebページにコピーして貼り付ければ完了です。そうは言っても、バージョン管理は重要であり、開発者が貢献するための基準を下げるための優れた手段です。Google Codeが提供するオプションはどれも問題ありません。あなたが好きなものと一緒に行くか、あなたが貢献者にどれを使いたいか尋ねるまで質問を延期してください。


0

コードまたはプロジェクトをオープンソースにすることは、誰でもそれを取得し、必要に応じて変更できることを意味します。これは、使用するライセンスの種類によって異なりますが、一般にオープンソースとは、誰でもソースコードをダウンロードして変更し、好きなように使用できることを意味します。

とにかく、このコードを入手するには、他の人がこのコードにアクセスできる必要があります。

コードをGitHubなどのパブリックオンラインリポジトリに取り込むのが最善の方法です。まず、コードが一般に公開されます。次に、そのようなサービスはバージョン管理も提供するため、コードはプロジェクトで整理されます。あなたや他の人が行った変更を追跡できます。また、プロジェクトを他の異なるプロジェクトに分岐(分離)することもできるので、他の人が作成したコードのすべての異なるバージョンを追跡できます。

これにより、コードが安全な場所に保存されることも保証されます。たとえば、PCの障害のあるハードディスクによってコードが失われることを心配する必要はありません。コードをオンラインで利用できるので、どこにいても作業できます。

次に、コードを世界に向けて公開するときが来たと判断した場合は、オンラインプロジェクトリポジトリへのリンクを送信するだけです。これは人々が慣れ親しんでいる技術なので、誰もが知っているので、ダウンロード、メッセージの投稿、異なるバージョンの作成などの方法を理解するのは簡単です。

それは、物事を行うための一般的な標準のようなものです。

オープンソースをさらに説明するのに役立つリンクがいくつかあります。


-6

バージョン管理システムについては、最もよく使用されている最新の代替手段、つまり「Git」を使用する必要があります。Mercurialはあまり人気がなく、SVNは古く、遅く、集中化されています。GITを使用すると、最新で人気のあるバージョン管理システムを利用できます。失うものはほとんどありません。

出典(DVCSの人気を反響):

/programming/tagged/git〜10kの質問 /programming/tagged/mercurial〜3kの質問

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

11700000結果vs

1580000件

ライセンスに関して:多分あなたは最も一般的なものを見る必要があります:GLP、MIT、LGPL、BSD、そしてあなたのプロジェクトにより適したものを選んでください。


7
Mercurialはプロプライエタリではありません... Gitとまったく同じオープンソースです!
Christian Specht、2011

4
ファンボーイは部分的に間違った引数で答えます。
Oben Sonne

1
「最も使用されている」-その情報のソースへの参照を提供してください。
シルバナール2011

申し訳ありませんが、それは私の認識にすぎません。GitはMercurialよりも使用されていると思います。SVNは古く、遅く、集中化されていると思います。ファンボーイの答え。さあ、gitハブはgitを使用し、linuxカーネルはgitを使用します。私の部門のすべてのプロジェクトはgitを使用します...
Pedro Rolo

2
おそらく、Gitに関する質問が豊富であることは、使用するのがより難しいことを示していますか?少数の人々が同じ点が提起された最も不人気なWeb開発フレームワークを調査するときに、同じデータを使用しました(不正確さについてコメント)。
Tim Post
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.