業務でGitのリポジトリを多数扱っていて、サポートのお手伝いのためにエラーメッセージからコードリーディングを串し刺しで探すことがある。で、このときに
- 「うぉー見つからねーどれが出してるんだー」「まったくわからん」「pullしてないやん…」
- 「なるほどーこれはあかんね」「いや確か直したってこの前聞いたよな」「pullしてないやん…」
といった悲しい出来事がまれによくあるケースになりそうなので、カレント直下のGitリポジトリ群をともかく最新にpullするツールを書くことにした。
この手のツールといえば、debian-installer開発の頃に使っていた、Joey Hessの通称mr、myreposが思い浮かぶのだが(パッケージはまだ配布されていてbrewにもある)、Perl依存はあまりしたくないというのと、ちょっとアレは用途に対して大きすぎる(VCS乱立期だったので、ほぼ全部のVCSに対応しようとしている)ので、git限定のシンプルなもので実装する。
単純にpullしかしない。デフォルトではブランチ名がmainかmasterのときのみpullする。
$ git allsync [adventcalendar]...main pulled [mackerel-agent]...master pulled [mackerel-agent-plugins]...master pull error error: Your local changes to the following files would be overwritten by merge: packaging/deb/debian/rules Please commit your changes or stash them before you merge. Aborting Updating f6817a6..9b891c4 [mackerel-plugin-f2b]...master pulled [mkr]...test-modify (skip)