LoginSignup
2

More than 5 years have passed since last update.

GitHub/GitLab 特定ディレクトリ配下のドキュメント群でwikiを一発更新する

Last updated at Posted at 2017-03-30

はじめに

  • リポジトリの特定ディレクトリ配下のドキュメント群を一気に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'

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2