Git: unshallow shallow clones if necessary
Fixes Homebrew/homebrew#41225.
This commit is contained in:
parent
986a62ebe9
commit
f31e411f38
@ -582,6 +582,10 @@ class GitDownloadStrategy < VCSDownloadStrategy
|
|||||||
@shallow && support_depth?
|
@shallow && support_depth?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def is_shallow_clone?
|
||||||
|
git_dir.join("shallow").exist?
|
||||||
|
end
|
||||||
|
|
||||||
def support_depth?
|
def support_depth?
|
||||||
@ref_type != :revision && SHALLOW_CLONE_WHITELIST.any? { |rx| rx === @url }
|
@ref_type != :revision && SHALLOW_CLONE_WHITELIST.any? { |rx| rx === @url }
|
||||||
end
|
end
|
||||||
@ -632,7 +636,11 @@ class GitDownloadStrategy < VCSDownloadStrategy
|
|||||||
|
|
||||||
def update_repo
|
def update_repo
|
||||||
if @ref_type == :branch || !has_ref?
|
if @ref_type == :branch || !has_ref?
|
||||||
quiet_safe_system 'git', 'fetch', 'origin'
|
if !shallow_clone? && is_shallow_clone?
|
||||||
|
quiet_safe_system 'git', 'fetch', 'origin', '--unshallow'
|
||||||
|
else
|
||||||
|
quiet_safe_system 'git', 'fetch', 'origin'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user