のねのBlog

パソコンの問題や、ソフトウェアの開発で起きた問題など書いていきます。よろしくお願いします^^。

cygwin64でrepoを使うとき、エラー:error: repo is not installed. Use "repo init" to install it here.

cygwin64を久しぶりに使った。

$repo
error: repo is not installed.  Use "repo init" to install it here.

どうして、エラーになるのか、わかりませんでした。
PATHは、.bash_profileで~/binに通してあります。
PATHも通っているし。

23 # Set PATH so it includes user's private bin if it exists
24 if [ -d "${HOME}/bin" ] ; then
25   PATH="${HOME}/bin:${PATH}"
26 fi

whichでも、repoのコマンド位置が正常に引ける。

$ which repo
/home/m_fujii/bin/repo

エラーになる原因は、repoにコマンド引数(initやhelp,-h)がないことでした。
"repo -help"はエラーになりました。

$ repo help
usage: repo COMMAND [ARGS]

repo is not yet installed.  Use "repo init" to install it here.

The most commonly used repo commands are:

  init      Install repo in the current working directory
  help      Display detailed help on a command

For access to the full online help, install repo ("repo init").

675 def _NotInstalled(): 
676   _print('error: repo is not installed.  Use "repo init" to install it here.', <===出ているメッセージ
677         file=sys.stderr)
678  sys.exit(1)
731  if not repo_main:
732    if opt.help:
733      _Usage()
734    if cmd == 'help':
735      _Help(args)
736    if not cmd:     <=== 引数がないと、ここに入るようです。
737      _NotInstalled()  <=== ここ
738    if cmd == 'init':
739      if my_git:
740        _SetDefaultsTo(my_git)
741

opt.helpの値

628 def _ParseArguments(args):
629  cmd = None
630  opt = _Options()
631  arg = []
632
633  for i in range(len(args)):
634    a = args[i]
635    if a == '-h' or a == '--help':
636      opt.help = True          <===
637
638    elif not a.startswith('-'):
639      cmd = a
640      arg = args[i + 1:]
641      break
642  return cmd, opt, arg