~/.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か判断している 実際のコード- テスト書けてないから死にたい