web-dev-qa-db-ja.com

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

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

私はコードホスティングが何であるかさえ知りません、そして検索はこれらすべての間の議論で私をもっと混乱させました、そしてグーグルコードが私にどのタイプのライセンスが欲しいか尋ねるのでこれはさらに悪化します。

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

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

10
Nathan

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

オープンソースソフトウェア開発の要点は、ソースコードを共有することです。これを行うには、tar/ZipファイルをWebサーバーまたはftpサーバーに配置するなど、いくつかの方法があります。グーグルコード(またはsourceforge.net、gitorious.org、bitbucket.org、および他の多く)のようなサービスは、この目的のためにあなた自身のサーバーを実行する必要性を取り除きます。

それは、現在のホスティングからサイトを削除する必要があることを意味しますか、それともこれはまったく異なるタイプのホスティングですか?

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

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

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

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

サイトをオープンソースにするとどうなりますか、どのような権利がありますか、

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

私はどのような権利を与えますか。

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

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

あなたの製品は他の開発者を引き付けるために十分な人気を必要とするので、これが起こる可能性は非常に低いです。

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

これらは3つの異なるバージョン管理システムであり、Subversionは一元化されており、GitとMercurialは分散されています。

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

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

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

¹Mercurialにはロック拡張機能がありますが、私はそれを使った経験がなく、使用可能かどうかはわかりません。

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

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

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

コードホスティングはまさにそれです-コードをホスト(または保持)する場所です。

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

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

9
Dave F

Joel Spolskyの すばらしいチュートリアルを書いた Hg(Mercurial)について。紹介セクションでは、Mercurialにアップグレードする理由を含め、Subversionについて説明していると思います。それを読んでください、それは私がMercurialとDVCS一般について多くを理解するのを本当に助けました。

ああ、ホストする準備ができたら、Google Codeを使用できます BitBucketGithubこの優れた拡張機能 )または他の人。

6
Jimmy Sawczuk

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

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

3
Kheldar

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

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

[編集]

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

2
Sarel Botha

ここのほとんどの人はhowに答えていますが、あなたの質問でwhyに実際に答えた人は誰もいないようです。

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

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

0
Mark Booth

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

(O'Reillyの本Open Sources http://oreilly.com/openbook/opensources/book/index.html は役に立ちますが、おそらくあなたが探しているものとは正確には一致しません。)

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

0
tripleee

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

とにかく、このコードを取得するには、他の人がこのコードに到達できる必要があります。

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

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

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

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

オープンソースをさらに説明するのに役立つと思われるリンク:

0
Jose Faeti