$ mkdir /home/tizen-ivi
$ cd /home/tizen-ivi
$ repo init -u ssh://hjj@review.tizen.org:29418/scm/manifest -b tizen -m ivi.xml
...
fatal: manifest 'ivi.xml' not available
fatal: remote tizen-gerrit not defined in /home/tizen-ivi/.repo/manifests/ivi.xml
刚开始以为是ssh的问题,于是便检查了一下ssh的配置,发现ssh没有问题,那这是为什么呢?会不会是服务器的问题导致repo init故障,于是在不同的时间段多次执行了repo init,还是同样的问题。后来仔细一想,既然是ivi.xml文件的问题,那不妨看一下这个文件有什么古怪。
$ cat .repo/manifests/ivi.xml
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<include name="_remote.xml" />
<default revision="accepted/tizen_ivi" remote="tizen-gerrit" sync-j="4" />
<include name="ivi/Metadata.xml" />
<include name="ivi/prebuilt.xml" />
<include name="ivi/projects.xml" />
</manifest>
根据错误提示,ivi.xml文件有问题,原因是remote tizen-gerrit未定义,在这个文件中相关词语有两处,一处是remote="tizen-gerrit"
,另一处是<include name="_remote.xml" />
,可以看出,ivi.xml引用了_remote.xml,会不会remote tizen-gerrit在_remote.xml中定义,而在ivi.xml引用却无效呢,看一下_remote.xml文件中的内容:
$ cat .repo/manifests/_remote.xml
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="tizen-gerrit" fetch="ssh://review.tizen.org/" review="https://review.tizen.org/gerrit"/>
</manifest>
果然,remote tizen-gerrit是在_remote.xml中定义的,那就把_remote.xml中的内容直接合并到ivi.xml试一下吧,而不是通过include引用,ivi.xml修改后如下:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="tizen-gerrit" fetch="ssh://review.tizen.org/" review="https://review.tizen.org/gerrit"/>
<default revision="accepted/tizen_ivi" remote="tizen-gerrit" sync-j="4" />
<include name="ivi/Metadata.xml" />
<include name="ivi/prebuilt.xml" />
<include name="ivi/projects.xml" />
</manifest>
修改完成之后,再执行repo init命令:
$ repo init -u ssh://hjj@review.tizen.org:29418/scm/manifest -b tizen -m ivi.xml
执行成功,^_^