![特定のディレクトリでGITリポジトリを見つけて、git bundleコマンドを実行します。](https://rvso.com/image/1087121/%E7%89%B9%E5%AE%9A%E3%81%AE%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E3%81%A7GIT%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E3%82%92%E8%A6%8B%E3%81%A4%E3%81%91%E3%81%A6%E3%80%81git%20bundle%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%97%E3%81%BE%E3%81%99%E3%80%82.png)
私は 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 が作成されます。そこから、それらを移動したり、さらにスクリプトを使用して処理したりできます。ただし、バンドル側は処理されます。