web-dev-qa-db-ja.com

個人のGitリポジトリを整理するにはどうすればよいですか?

私は、最近開発したいくつかのiOSプロジェクトの一部として開発した2つのライブラリを他のiOS開発者が自由に利用できるようにする計画で、GitHubアカウントを設定中です。

現在、ほとんどのコードのオフサイトバックアップがないので、この一環として、当初はすべての個人プロジェクト、または少なくともすべてのiOSプロジェクトを、GitHubがホストするプライベートレポジトリにアップロードすると思いました。しかし、私はlotのプロジェクトを抱えており、その多くはかなり価値が低い(つまり、本から改作され、学習体験のために書かれている)。 GitHubはプライベートリポジトリによって課金されるだけでなく、リポジトリを階層的に編成する方法もないようです。

階層のあるgitリポジトリを使用して、必要に応じてピースをチェックアウト/操作できるようにするために欠けているものはありますか?

GitHub(またはBitBucketなどの競合他社)には、欠けているプロジェクト編成機能がありますか?

それができない場合、この状況を処理するために一般的に受け入れられている「Gitの方法」は何ですか(リリースを目的としていないプロジェクトを破棄し、オフラインで保存し、どういうわけか一緒にバンドルするなど)。

私の知る限り、私の選択肢は次のとおりです。

  1. ライブラリをGitHubに配置し、他のすべてのプロジェクトで独自のSVNを引き続きホストし、オフサイトバックアップ(ブリーチ)には非VCSソリューションを使用します。
  2. 私がリリースする予定のライブラリとソフトウェアを(それぞれパブリックとプライベートとして)GitHubに置き、あまり気にしないプロジェクトのために自分のSVNをホストし続け、XYZの実装方法についてのメモリを更新するために再訪問する可能性があります、私の家が破裂した場合(二重ブリーチ)、私がそれらを消滅する用意があることを決定し、
  3. すべてを[GitHubまたはBitBucket、あるいはその両方]に置き、必要なものを検索するか、[GitHubまたはBitBucket、またはその両方]のアカウントへのポインターのオフラインセットを維持することで、とんでもない数のリポジトリを持つことに対処します(トリプルblech)
20
Arkaaito

bitbucket.orgでは、無制限のプライベートリポジトリを作成できます。

Gitでは、一部のコードだけをチェックアウトすることはできません。したがって、プロジェクトごとにリポジトリを作成するか、すべてのプロジェクトのクローンを作成する必要があります。実際には、すべての小さなプロジェクトを1つのリポジトリに配置することに問題はありません。一度クローンを作成すれば完了です。

Gitを使用すると、ローカルリポジトリを吹き飛ばしたり、別のマシンに移動したりしない限り、コードを「チェックアウト」する必要はありません。すべての変更を同期するだけです。

多数のリポジトリで同様の問題が発生します。それらすべてを1つのリポジトリに格納できないのは、すべてのリポジトリから異なるバージョンを分岐する必要があるためです。管理が非常に難しい。

11

短い答え ...

私の提案: GitHubやBitbucket(またはその他)のパブリックアカウントから始めます。いくつかのパブリックプロジェクトを作成し、ツール/インターフェースの使用を開始します。サービスの感覚をつかんだら、各サービスの制限、長所、短所を理解する必要があります。そこから、バージョン管理Enlightenmentへの最適なパスを選択できるはずです。 :)


長い答え...

現在、ほとんどのコードのオフサイトバックアップがないので、この一環として、当初はすべての個人プロジェクト、または少なくともすべてのiOSプロジェクトを、GitHubがホストするプライベートレポジトリにアップロードすると思いました。しかし、私はたくさんのプロジェクトを抱えていますが、それらの多くはかなり価値がありません(つまり、本から改作され、学習体験のために書かれています)。

独自のGitクライアントのインストールを検討しましたか?すでにWebホスティングの料金を支払っている場合は、そのHostを独自のGitセットアップに使用することは理にかなっています。

たとえば、私のホストは WebFaction (所属なし)です。

Git Webアプリケーションのインストール

このルートに向かうと、$$$、特に節約できます。ホスティングの料金をすでに支払っている場合。

GitHubはプライベートリポジトリによって課金されるだけでなく、

他の人を明確にするために(ここでも、GitHubまたはBitBucketとの提携関係はありません):

GitHub:プランと価格

  • $ 7 /月。最大5個のプライベートリポジトリ、それ以外は無制限。
  • $ 12 /月最大10個のプライベートリポジトリ、それ以外は無制限。
  • $ 12 /月最大20個のプライベートリポジトリの場合、その他すべて無制限。

「ビジネスプラン」の料金は異なります。

AtlassianによるBitbucketのGitおよびMercurialリポジトリホスティングの料金

Andrewが他の回答で述べたように、Bitbucketは無制限のプライベートリポジトリを売り込んでいます。

  • 5ユーザー:無料
  • 10ユーザー: $ 10 /月。
  • 25ユーザー: $ 25 /月。
  • 50ユーザー: $ 50 /月。
  • 100ユーザー: $ 100 /月。
  • 無制限 $ 200 /月。

リポジトリを階層的に整理する方法がないようです。

「階層的に」という意味が正確にわかりません(おそらく私はSVNに慣れていないためです)。

これが役立つかどうかはわかりませんが、この比較表を見て、コマンドがどのように比較/異なるかを確認できます。

階層のあるgitリポジトリを使用して、必要に応じてピースをチェックアウト/操作できるようにするために欠けているものはありますか?

分岐?

GitHub(またはBitBucketなどの競合他社)には、欠けているプロジェクト編成機能がありますか?

これが役立つかどうかはわかりませんが、次のことを検討してみてください。

Gitには、コミット( git-gui )およびブラウジング( gitk )用の組み込みGUIツールが付属していますが、プラットフォーム固有のユーザー向けのサードパーティツールがいくつかあります経験。

...繰り返しになりますが、これらのツールのいずれかが、可能性を感じ取るのに役立つかどうかはわかりません。

明確にするために、Gitのスキルレベルはわかりません... Git/GitHubを初めて使用する場合は、GUIを使用することで、物事を簡単に感じることができます。個人的には、Mac/Windowsアプリ用の公式GitHubを使用するのが好きです。

それができない場合、この状況に対処するために一般的に受け入れられている「gitの方法」は何ですか(リリースを目的としていないプロジェクトを破棄し、オフラインで保存し、どういうわけか一緒にバンドルするなど)。

私があなただったら、リポジトリを使っていただろう。

いくつのプライベートリポジトリが必要ですか?

GitHubを使用する場合の1つの解決策は、最も安価なプランを取得し、いくつかのプライベートリポジトリを利用して、すべてのテスト/非公開コードを保持することです。 mainブランチでフォルダー構造を使用して階層構造を維持することも、複数のブランチを使用して物事をさらに分離することもできます。

ヒント: Gitの最新バージョンを使用している場合は、git clone -b mybranch --single-branch git://sub.domain.com/repo.gitを使用して特定のブランチをプルできます。

ただし、警告を出さなければなりません。ブランチを使用してコード(フォルダーなど)を整理することは、実際には最善の方法ではありません(ただし、この方法を使用できないということはありません)。

GitHubブランチに関する関連情報については、ここで私の回答を参照してください。

繰り返しますが、私は複数のリポジトリが進むべき道だと思います。

コードを本当に非公開にする必要があるかどうかを自問するかもしれません。影響を与えずに上記のコードを公開することは可能ですか?

ライブラリをGitHubに配置し、他のすべてのプロジェクトで独自のSVNを引き続きホストし、オフサイトバックアップ(ブリーチ)には非VCSソリューションを使用します。

この方法を使用する場合、 Dropbox (または類似の)は、何らかのバージョン管理を取得してオフサイトバックアップの同期をとるのに適した方法です。

私がリリースする予定のライブラリとソフトウェアを(それぞれパブリックとプライベートとして)GitHubに置き、あまり気にしないプロジェクトのために自分のSVNをホストし続け、XYZの実装方法についてのメモリを更新するために再訪問する可能性があります、私の家が破裂した場合(二重ブリーチ)、私がそれらを消滅する用意があることを決定し、

これで、「ホスティングの料金をすでに支払っていますか?ある場合は、独自のGitホストをインストールできます」という質問に戻ります。利点は、すべてが同じホスト上にない場合でも、すべてのソースコードをGit傘下に置くことができるということです(つまり、GitHubを使用して、公開したいものを公開します)。

すべてを[GitHubまたはBitBucket、あるいはその両方]に置き、必要なものを検索するか、[GitHubまたはBitBucket、またはその両方]のアカウントへのポインターのオフラインセットを維持することで、とんでもない数のリポジトリを持つことに対処します(トリプルblech)

--->上記の私の短い回答を参照してください。 ^^^^^^

5
mhulse

可能なテクニックの1つは、ブランチを使用することです。

Git repoのブランチはコミットへのポインタにすぎず、何らかの方法で相互に関連している必要はありません。したがって、ホスティングサービスで「マイナープロジェクト」リポジトリを作成し、プロジェクトごとにそのリポジトリのブランチを使用できます。マイナープロジェクトが大きくなった場合は、ブランチを独自のリポジトリに簡単に移動できます。

ローカルでは、ブランチを個別のローカルレポジトリに保持するか(ローカルレポジトリとリモートレポジトリを1:1でマッピングする必要はありません)、単一のローカルレポジトリを用意し、git worktreeを使用して複数の作業ツリーを維持できます。個人的には、最初のアプローチはエラーが発生しにくいと思います。

0
Peter Green

これが私がすることです:

  • 公開するスタンドアロンプ​​ロジェクトを個別の GitHub リポジトリに配置します。 GitHubは現在、コードを共有するための事実上の場所であるため、プロジェクトを見つけやすく、フォークしやすくなります。
  • 非公開にしたいプロジェクトについては、選択したプロバイダーがホストする非公開リポジトリに配置します。すでに述べたように、 Bitbucket は、無制限のプライベートリポジトリを可能にするため、これに適しています。
  • 他のすべてのコードを「ジャンク」リポジトリに配置します。これには、学習とテストに使用するコードや、実際にはプロジェクトの一部ではない小さなスニペットを含めることができます。これを非公開にする理由がない限り、GitHubでこのリポジトリをホストすることもできます。

    (SVNで既に持っている)バージョン管理の通常の利点に加えて、コードがオンラインでバックアップされます。ジャンクコードのいずれかがプロジェクトに変わった場合は、それを独自のリポジトリにスピンオフできます。

    このコードを個別のリポジトリに配置するか、gitサブモジュールやサブツリーなどの豪華なものを使用できますが、すべてを1つのリポジトリに保持し、フォルダを使用して整理するのが最も簡単です。はるかに単純で、gitはリポのサイズが問題にならないほど高速です。

0
bmaupin