git_fetch 过程
fetch.init ->setup_localpath->git.localpath->latest_revision->git->_latest_revision
git ls-remote git://path branch 得到最新tag
git.go self._contains_ref
git log --pretty=oneline -n 1 tag -- 2> /dev/null | wc -l 读取log
读取文件到 暂存区
git read-tree tag
从暂存区拷贝文件到工作目录
git checkout-index -q -f --prefix=workdir/ -a
存包
tar -czf /work/gitproject.tar.gz ./*
疑惑:
recipes/openpli/enigma2-pliplus.bb 在SRC_URI加上tag可以选择不同版本
+SRCREV= "bcf694f5e6d3b9e8dba1f8e14201694420390bad",并不能得到这个tag
-inherit gitpkgv
-PV = "1.0+git${SRCPV}"
-PKGV = "1.0+git${GITPKGV}"仍然更新最新
在recipes/libdvdnav/libdvdnav_4.1.3.7.bb 中也可以在SRC_URI中增加tag可以fetch到正确版本
但是屏蔽SRCREV = "850e513d4fea29b40879378b13003cd677e5214b",却在git.fetch.init中得到tag值为bitbake.conf中设置的1
+inherit gitpkgv
+PV = "1.0+git${SRCPV}"
+PKGV = "1.0+git${GITPKGV}"
tag的值仍为1,并不去更新最新的版本
两方面思考:1.每次实验都用的是clean命令,只是删除了工作目录和stamps,并未删除CacheData,造成有些元数据并没有更新
2.PV中的SRCPV=bb.fetch.get_srcrev 如何把这个PV转换成代码中的SRCREV?以及BB文件中的SRCREV和bitbake.conf中的SRCREV优先级关系?
以及pv中 的1.0如何定义?
SVN_fetch过程
fetch.init ->setup_localpath->svn.localpath->latest_revision->svn->_latest_revision
其中在svn.localpath中可以分为读取SRC_URI的参数 rev,data,如果需要读取特定的版本,可以设置这两个变量来读取某个版本或某天的版本
如果都没有则读PV中是否有DATA的值,如果有则读此时。没有则到latest_revision
LANG=C LC_ALL=C /usr/bin/env svn --non-interactive info https://openpli.svn.sourceforge.net/svnroot/openpli/trunk/external/tuxterm/
察看服务器文件详细信息
/usr/bin/env svn --non-interactive update -r {20130426}或/usr/bin/env svn --non-interactive update -r 257
更新到某个时间或某个版本
思考:recipes/tremor_svn.bb中PV = "1:0.0+svn${SRCDATE}"设置了读取当前日期,如果想改成读取latest-revision,改成PV = "1:0.0+svn${SRCPV}
得到的tag是1,并不是想要的NONE,所以进一步验证git中的疑惑,这里的REV要清除CACHEDATA。
CVS_FETCH过程
fetch.init ->setup_localpath->svn.localpath
读取SRC_URI的tag,读取SRC_URI带的data,没有则用系统ud.data,如果有tag,清除ud.data 然后得到要解析的path=ud.localfile
cvs '-d:pserver:anoncvs:[email protected]:/cvs' co -r r0_7 apps/update-rc.d
检出某个rev或data的版本