export GIT_DIR=~/openssl.git git init git config --file ~/openssl.git/config --replace-all remote.aosp.url git://robot/android5.0.2r1/platform/external/openssl git config --file ~/openssl.git/config --replace-all remote.aosp.projname platform/external/openssl git config --file ~/openssl.git/config --replace-all remote.aosp.fetch +refs/heads/*:refs/heads/* git fetch --update-head-ok aosp --tags +refs/heads/*:refs/heads/* git pack-refs --all --prune git symbolic-ref -m 'manifest set tp refs/tags/android-5.0.2_r1' HEAD refs/tags/android-5.0.2_r1 git -c pack.thread=1 gc --auto
沒加 --mirror 的話。
GIT_DIR 會在 .repo/project-objects/platform/external/openssl.git
然後動做一樣。
最後的 checkout,在 --trace 中看不到一些動作。
所以要配盒source code 來看。
project.py:
def _InitWorkTree(self): dotgit = os.path.join(self.worktree,'.git') if not os.path.exist(gotgit): os.makedirs(dotgit) self._ReferenceGitDir(self.gitdir, dotgit, share_ref=True, copy_all=False) _lwrite(os.path.join(dotgit, HEAD). '%s\n" % self.GetRevisionId()) cmd = ['read-tree', '--reset', '-u'] cmd.append('-v') cmd.append(HEAD) if GitCommand(self,cmd),Wait() != 0 raise GitError("cannot initialize work Tree") self._CopyAndLinkFiles()裡面的東西,幾忽就是 git 在做的事...
copy .git 的內容。
沒有留言:
張貼留言