Logic Delight

明日のワシは忘れてしまうから、コードにはコメントを書くのです。

自習系GitHubリポジトリをひとつにまとめてみた

厳密には、"今日覚えたこと"を書いていくという、一部で流行りの気配を見せている til (Today I learned) リポジトリの真似をして、自習系リポジトリをまとめてみた、という記事ですな。

(切欠) GithubでTILというリポジトリが流行りつつあるのかもしれない - 生涯未熟

リポジトリ(4つ)

  • black-hat-python
  • electron-sample
  • GlibTraining
  • Python-handson

出来上がり状態

  • til
    • README.md
    • black-hat-python
    • electron-sample
    • GlibTraining
    • Python-handson

github.com

新設した til リポジトリに各リポジトリを内包させる形で git filter-branch していく。各リポジトリのコミット履歴は残り、元リポジトリの名称のブランチから master にマージされたかたちになる。

参考にしたサイト

qiita.com

コメント欄にあるとおり、本文中の git filter-branch の部分がMacだとエラーになってしまうので、コメントにあるコマンドを使った。

また、electron-sample リポジトリは、直下に同名のディレクトリが存在していたので、これを src にリネームしたうえで実施してみたが、「コミット履歴中にリポジトリ名と同名のフォルダが存在すると...」というこれまたコメント欄にあるとおりのエラーになったので、こちらもMac版のコマンドに修正したうえで実施した。

つまり、まとめると

#GitHub Account
ACCOUNT=shionit
#Source Repository
REPO=XXXXX

# at dest repository path
git remote add $REPO git@github.com:$ACCOUNT/$REPO.git
git fetch $REPO
git checkout -b $REPO $REPO/master
git filter-branch -f --tree-filter "mkdir __temp__ && git mv -k {,.[!.],..[!.]}* __temp__/ && mkdir $REPO && git mv -k __temp__/{,.[!.],..[!.]}* $REPO/"
git checkout master
git merge $REPO

結果、単一の自習リポジトリにまとめられてスッキリですな☆