git filter-branch でディレクトリを残す ― 2017年07月20日 12時21分18秒
% git filter-branch --subdirectory-filter libs/libAAA
だと、libAAA 直下のファイルだけが残る。
Subversion 等にあったため、一旦、libs 以下のファイルを各ライブラリ毎の git レポジトリに分割したい。ところがこの形だと、後々にまた、二つのライブラリを統合するときに、 衝突が起きるので、libs/libAAA を libAAA のディレクトリを残したままにして、他の全てのファイルとディレクトリを消したい。
思考錯誤の後、以下の形に落ち着いた。
tree-filter はシェルコマンドを受け取るので、awk 等では文字のエスケープが若干厄介だが、この形だとほぼどのディレクトリ名でも定型で処理することが出来ている。
% cd libs
% git filter-branch --tree-filter \
'ls | nawk "\$0 !~ /^libAAA\$/" | xargs rm -rf' --prune-empty
前回。
コメント
トラックバック
このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2017/07/20/8624107/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。