我想使用git clone --depth [N],但是要使用这样N可以确保获得特定的阴影。
如何确定远程回购中的sha深度。请注意,在本地克隆它是为了捕获22。我想这样做是为了避免全部克隆。
选项1:
如果您有能力获得存储库的完整克隆,则可以使用 找到深度git rev-list HEAD ^42c6ee9 --count。
这将找到任何特定提交的深度。没有远程版本,因此只有当您可以维护完整副本然后ssh进入其中以确定深度时,这才有效。
这使您只需克隆一次,然后您就可以在接下来想要进行浅复制的所有时间中回答问题。
选项2:
使用git clone --depth 1then 迭代git fetch --depth=i+1实际上是一个值得测试的好主意。(上面的@leon 也提出了)。
根据您的存储库的特征,这将是有意义的。
例如 Django 存储库有 23330 次提交(测试时)
./full.sh - 拉取完整的本地存储库
git clone https://github.com/django/django
Run Code Online (Sandbox Code Playgroud)
./oracle.sh - 如果你神奇地知道正确的答案。时间下限。
git clone --depth 10 https://github.com/django/django.git
Run Code Online (Sandbox Code Playgroud)
./search.sh - 迭代
git clone --depth 1 https://github.com/django/django.git
cd django
i=1
until git show 5d35181 > /dev/null
do
i=$((i+1))
git fetch --depth=$i
done
Run Code Online (Sandbox Code Playgroud)
搜索虽然存在开销,但仍可能比完整克隆更快。
./full.sh 21.34s
./oracle.sh 1.12s
./search.sh 3.05s
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
410 次 |
| 最近记录: |