openembedded git-fetch过程

本文详细解析了OpenEmbedded中git-fetch的过程,包括获取最新tag、读取log及存档步骤。同时,提出了在不同recipe中SRCREV与tag处理的不一致问题,讨论了可能的原因,如CacheData的影响及PV、SRCPV之间的转换关系。此外,还简要介绍了SVN和CVS的fetch过程,探讨了版本控制的策略选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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:anoncvs@anoncvs.handhelds.org:/cvs' co -r r0_7 apps/update-rc.d
检出某个rev或data的版本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值