特定のディレクトリでGITリポジトリを見つけて、git bundleコマンドを実行します。

特定のディレクトリでGITリポジトリを見つけて、git bundleコマンドを実行します。

私は Ubuntu 12.04 TLS を使用しており、特定のディレクトリに Git リポジトリがあります。リポジトリのスケジュールされたバックアップを取得し、それをメールで送信できる特定のディレクトリに配置することを試みています。

その過程で、グーグルで特定のディレクトリ内のすべてのgitリポジトリを見つける方法を知りました。以下のコマンドを見つけました。

find /home/mysys/D/ -name .git -type d -prune

しかし、パスは

/home/mysys/D/テスト/.git

ディレクトリに関連付けられているすべてのgitファイルをリストし、動作していますが、git bundle create directoryname.bundle --allを実行して、より自動化する必要があります。そのためには、次のことを試しました。

find /home/mysys/D/ -name .git -type d -prune -exec git bundle create test.bundle --all {} \;

上記のbashスクリプトは、

fatal: Invalid gitfile format: .git

これを堅牢に動作させるにはどうすればよいか。

前もって感謝します。

答え1

あなたはなりたいgitが管理するディレクトリがgit bundle実行されるので、find ... -execdir ... \;

find /home/mysys/D/ -type d -name .git -prune -execdir git bundle create backup.bundle --all \;

これにより、これらすべてのディレクトリに backup.bundle が作成されます。そこから、それらを移動したり、さらにスクリプトを使用して処理したりできます。ただし、バンドル側は処理されます。

関連情報