7

Git を使用してバージョン管理を開始したい個人用スクリプトの膨大なコレクションがあります。以前にコードを次のように整理しました。

~/code/python/projects/ (for large stuff, each project contained in an individual folder)
~/code/python/scripts/ (single file scripts all contained in this directory)
~/code/python/sandbox/ (my testing area)
~/code/python/docs/ (downloaded documentation)

~/code/java/... (as above)

ここで、git を使用してコードのバージョン管理を開始します。これにより、履歴を取得し、すべてのコードをリモート サーバーにバックアップできます。

SVN を使用していた場合、" ~/code/" ディレクトリ全体を大規模なリポジトリに保持することはわかっていますが、これが Git を使用する良い方法ではないことは理解しています。
私がオンラインで見たほとんどの情報は、すべてのプロジェクト フォルダーを 1 つの場所 (Python や Java 用の個別のディレクトリではなく) に保持し、各プロジェクトには独自の git リポジトリが含まれていることを示唆しています。後でプロジェクトに変換できるファイル スクリプト/実験。

しかし、すべてのコード ディレクトリを 1 つの領域に統合することについて、どのように感じているかわかりません。個別のコード ディレクトリをそのまま維持する良い方法はありますか、それとも努力する価値はありませんか? 他に何も知らなかったので、別のコードディレクトリに接続されているだけかもしれません...

また、(補足として) すべてのプロジェクトとスクリプトの時系列の履歴をすばやく確認できるようにしたいと考えています。そのため、最近作成したプロジェクトを確認できます。私はすべてのプロジェクトの最初に番号を付けることでこれを行っていました, 002project, 003project.
すべてのプロジェクト名に番号を追加することなく、git でこれを行う自動または簡単な方法はありますか?

コードを整理するための実用的または哲学的なアドバイスをお待ちしています。ありがとう!!!

4

2 に答える 2

7

SVN を使用している場合は、「~/code/」ディレクトリ全体を大きなリポジトリに保持することはわかっていますが、これは Git を使用する良い方法ではないことは理解しています。

git が人々に単一のモノリシック リポジトリを持つことを思いとどまらせる理由は、リポジトリのサブ ディレクトリを複製できないからです (SVN でできるように)。

git://blah/somecorp_code.git何百万ものリビジョンがあり、15GB あるとします。そのコードのサブディレクトリだけが必要な場合は、15 GB をすべて取得するか、何も取得しないかのどちらかです。

個人的なコードの場合、これは実際には問題になりません。約 20MB の「モノリシック」git リポジトリが 1 つあり、それを使用したいすべてのマシンで喜んで複製できます。

他の誰もそれを使用せず、他の誰もコミットしません。そして、分岐の方法で多くのことを行うことはめったにありません。それは実際には、素敵な同期とリモートバックアップを備えた派手な元に戻すシステムを使用するだけです(プライベートGitHubプロジェクト)

以下のように整理しました。

リポジトリのルート レベルには、codeフォルダがあります (Web 開発用のフォルダと一緒にsites- これがリポジトリが 20 MB である理由です)。

code フォルダーには、さまざまな言語 ( pythonrubycなど)のフォルダーがあります。

各言語ディレクトリには、2 つのフォルダーsnippetsprojects. スニペット内には一連のファイルがあり、プロジェクト内には一連のフォルダーがあります。

これらのプロジェクトは私がランダムに書いたものですが、実際にはあまり取り組んでいません (おもちゃのプロジェクト、「できるかな...」プロジェクトなど)。

単一の Python ファイルの場合は に入りcode/python/snippets/、複数のファイルの場合は に入りますcode/python/projects/{project name}

プロジェクトを (通常は Github で) 公開する場合は、新しいリポジトリを作成し、コードをコピーして Github と同期します。

別の「アクティブなプロジェクト」リポジトリは、モノリシック リポジトリとは無関係になりました。サブモジュール プロジェクトを調べましたが、この使用法を意図したものではありません。関連のない一連のリポジトリを管理するのではなく、依存関係のクローンを簡単に作成できるように設計されています。

Github API を使用して、すべてのプロジェクトをローカルで自動的に複製するか、プロジェクトを更新するスクリプトがあります。これは、git pull自己完結型のgithubsync.py です(github.py を同じファイルにマージしました)。ここで gist/373731 として見つけることができます

最初は githubsync.py を使用してプロジェクトをラップトップとデスクトップにクローンし、バックアップとして Dropbox 内で定期的に実行しました。

于 2010-04-21T11:47:10.730 に答える
2

SVN を使用していた場合、" ~/code/" ディレクトリ全体を大規模なリポジトリに保持することはわかっていますが、これが Git を使用する良い方法ではないことは理解しています。

はい、そうです。
しかし、大規模なリポジトリを作成したら、独自のライフサイクルと独自のタグで進化するパーツを区別する必要があります。あなたが言ったように、それらは独自のgitリポジトリに
なるサブモジュールになります。

したがって、次のようになります。

code
  .git (main project)
  python
    .git (main sub-project for all python-related stuff)
    project1 
      .git (first submodule)
    project2
      .git (first submodule)
    ...
    scripts
      .git (one submodules for all your scripts)
    sandbox
      .git (sandbox submodule)
    docs
      .git (docs submodule)
  java
    .git (main sub-project for all java-related stuff)
    ... (repeat same organization)

注: プロジェクト作成の時系列は、命名規則を使用してより適切に管理できます。

多くのサブモジュールを使用すると、次のことができます。

  • 必ずしもすべてを取得する必要はなく、コレクションの任意の部分で実際にクローンを作成して作業します
  • または、最初に持っていたのと同じ古い組織を再構築できます
于 2010-04-17T10:05:05.920 に答える