~/.gitconfig で vcs = svn としつつ、 ghq get -p svn://svn.zabbix.com/trunk を実行すると、エラーになってcheckoutできない。
ghq get -p svn://svn.zabbix.com/trunk clone ssh://git@svn.zabbix.com/trunk -> /path/to/svn.zabbix.com/trunk svn checkout ssh://git@svn.zabbix.com/trunk /path/to/svn.zabbix.com/trunk svn: E170000: Unrecognized URL scheme for 'ssh://git@svn.zabbix.com/trunk' error /usr/bin/svn: exit status 1
理由は、git以外のvcsを指定したときにghq get -pを実行したから。-pオプションは、指定したURLをgitプロトコルに変換するものだが(上のログ参照)、vcsがgitじゃなくても-pをつけたらこのURL変換が適用される。これはバグなので、直した。
reflect.TypeOf(remote).Elem() == reflect.TypeOf(GitHubRepository{})みたいなことをして型チェックしようと思ったけど、isSSHのチェックのタイミングでremoteが使えないからシンプルにGitConfig関数でghq.vcsを取得する方法を選んだghq.vcsって必須の設定じゃない。何も指定しなかったらRunSilentlyをgit/hg/svnで実行して、エラーにならないものでどのvcsか判断している 実際のコード- テスト書けてないから死にたい