web-dev-qa-db-ja.com

Gitおよびサブリポジトリ

現在のリポジトリ内のどこかにある他のリポジトリにファイルとディレクトリを含めるようにgitに強制する方法はありますか?

私が尋ねる理由は、私が次のようなレイアウトを持っているからです。

Projects
  |- Some Project
  |   |- .git
  |- Another Project
  |   |- .git
  |- Yet Another Project
  |   |- .svn
  |- A non versioned Project
  |- etc..

今私がやりたいのは、プロジェクトでgit initを実行してから、次のコマンドでバックアップされたフォルダー内のベアリポジトリにプッシュする毎日のcronジョブを実行することです。

...<set variables>...
git add -A
git commit -m "Automatic Update $Date $Time"
git Push --mirror --repo=/backedup/Projects

私の計画は、.git.svn.hgなどを.gitignoreに追加し、これをファイルの安全バックアップとして使用することでした。

編集:私は以下にいくつかの素晴らしい提案がありますが、この特定のケースが可能かどうかについてはまだ興味があります。フォルダー全体をrdiffでバックアップするということは、膨張したファイルをバックアップメディアにバックアップすることを意味しますが、ベアリポジトリは160MBではなく4MBを使用します。また、私が考えていたので、それが可能かどうかを知りたいだけです。眠りを失います。

6
Don

使用 gitサブモジュール

サブモジュールを使用すると、サブリポジトリの変更の特定の詳細を追跡することなく、他のリポジトリ内にリポジトリを配置できます。

この機能は、他の場所で追跡されている依存関係に依存する可能性のあるプロジェクトを処理するために特別に作成されました。

より詳細な使用例をいくつか示しますが、この特定の機能を使用する理由はまだありません。

3
Evan Plaice

この特定のケースは不可能です。そして、実用的ではありません。

  • ネストされたGitリポジトリが検出され、ルートディレクトリのgit add -Aはネストされた.gitサブディレクトリを考慮しません。
  • .svnは機能しますが、他のすべてを無視するように注意深く調整された.gitignoreが必要になります。

コメントの akira で示唆されているように、圧縮されたssh上にインクリメンタルコピーを使用する別のバックアップジョブがより良い解決策です。

0
VonC