はじめに
- リポジトリの特定ディレクトリ配下のドキュメント群を一気にwikiにアップするエイリアスを作成しました。
-
git push --force
で強制pushするので、ドキュメント管理はあくまでメインリポジトリで行い、wikiは公開用、という場合に使えるかと思います。 - 逆に、ドキュメントはwikiで管理するという場合には適しません。
つくったもの
エイリアスの登録
$ git config --global alias.wikiupdate '!f () { git push `git config --get remote.origin.url | sed -e 's/.git$/.wiki.git/'` `git subtree split --prefix ${1}`:master --force ;};f'
使い方
リポジトリのルートディレクトリ /path/to/your/repo
にて下記を実行することで、 path/to/doc/dir
内の全ドキュメントがwikiにアップロードされます。
$ cd /path/to/your/repo
$ git wikiupdate path/to/doc/dir
解説
wikiのリポジトリを取得
- GitHub, GitLabでは、リポジトリのurlの最後の
.git
を.wiki.git
に置き換えたものがwikiのリポジトリ -
git config --get remote.origin.url
でリポジトリのurlを取得 -
sed -e 's/.git$/.wiki.git/'
で末尾を置換
`git config --get remote.origin.url | sed -e 's/.git$/.wiki.git/'`
特定ディレクトリ配下のみを切り出す
-
subtree split
は特定のディレクトリ配下のみを切り出して、コミットIDを発行してくれる
`git subtree split --prefix ${1}`
wikiのリポジトリに強制push
- 取得したwikiのリポジトリのmasterへ、切り出した内容をpush
git push {リポジトリのurl} {commit ID}:master --force
エイリアスに登録
-
git config
でglobalのエイリアスに登録 - 1番目の引数(対象ディレクトリ)を関数に渡す
git config --global alias.wikiupdate '!f () { ... ${1} ... }; f'