如何解决Android repo脚本在.repo / projects /中创建裸git存储库的目的是什么?
| Android源由仓库管理。使用repo进行同步时,将创建一个名为.repo/projects/
的目录,其中包含所有git存储库,这些存储库也以裸git格式直接在当前工作目录中检出。
回购协议维护裸git仓库的目的是什么?回购又如何使用这些裸仓库?
(注意:澄清:我写“ repo”时不是在谈论git存储库,而是在专门谈论由android创建的repo
脚本,用于维护包含Android源代码的所有git存储库。)
解决方法
在使用Android存储库清单系统一段时间后,我想我现在已经了解
.repo/projects/
目录中裸存储库的用途。
正如@Fredrik回答的那样,项目中没有其他副本,直接由repo
创建的“克隆”中表示。实际上,克隆中所有.git
目录的内容都只是符号链接,如下所示:
$ ll development/.git/
total 452
drwxr-xr-x 2 bfh bfh 4096 2011-08-15 13:55 ./
drwxr-xr-x 20 bfh bfh 4096 2011-08-15 13:55 ../
lrwxrwxrwx 1 bfh bfh 43 2011-08-15 13:55 config -> ../../.repo/projects/development.git/config
lrwxrwxrwx 1 bfh bfh 48 2011-08-15 13:55 description -> ../../.repo/projects/development.git/description
-rw-r--r-- 1 bfh bfh 41 2011-08-15 13:55 HEAD
lrwxrwxrwx 1 bfh bfh 42 2011-08-15 13:55 hooks -> ../../.repo/projects/development.git/hooks/
-rw-r--r-- 1 bfh bfh 449008 2011-08-15 13:55 index
lrwxrwxrwx 1 bfh bfh 41 2011-08-15 13:55 info -> ../../.repo/projects/development.git/info/
lrwxrwxrwx 1 bfh bfh 41 2011-08-15 13:55 logs -> ../../.repo/projects/development.git/logs/
lrwxrwxrwx 1 bfh bfh 44 2011-08-15 13:55 objects -> ../../.repo/projects/development.git/objects/
lrwxrwxrwx 1 bfh bfh 48 2011-08-15 13:55 packed-refs -> ../../.repo/projects/development.git/packed-refs
lrwxrwxrwx 1 bfh bfh 41 2011-08-15 13:55 refs -> ../../.repo/projects/development.git/refs/
lrwxrwxrwx 1 bfh bfh 45 2011-08-15 13:55 rr-cache -> ../../.repo/projects/development.git/rr-cache/
lrwxrwxrwx 1 bfh bfh 40 2011-08-15 13:55 svn -> ../../.repo/projects/development.git/svn
因此,实际的git存储库在一个克隆中仅表示一次。
保持裸露和正常git的原因是清单系统的工作方式。清单系统是一种指定将被检出的git集合的方式,以及将其检出为哪个版本的git。清单文件本身保存在git中,并且repo命令允许根据需要更改清单git的分支。
因此,为了允许(快速)根据清单文件中当前选择的内容删除和添加git,repo可以将您曾经克隆的所有git保留在.repo/projects
文件夹中,然后仅将其复制到\“ normal \“如果在清单文件的当前分支中选择它们,则克隆区域。
, 它不是两个副本,一个组件中的“ 4”文件夹包含指向“ 8”中相应组件的符号链接。
, 免责声明:我离Git专家还很远。
我想您是说在结帐代码时会得到两个副本。一个是工作副本(您应将其复制到的位置),另一个是.repo / projects。假设我已正确解释了该问题,则最好的猜测是保留了.repo / projects中的副本,以便您可以快速与之比较并恢复到签出的基本修订,而不必返回服务器。我认为VCS经常这样做。 SVN通过将.svn文件夹放在工作副本的所有文件夹中并将基本修订文件放在其中来实现此目的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。