git-download: Fetch only the required commit, if possible.
* guix/build/git.scm (git-fetch): Fetch only the required commit, if possible.
This commit is contained in:
		
							parent
							
								
									48c8622010
								
							
						
					
					
						commit
						329dabe13b
					
				
					 1 changed files with 23 additions and 20 deletions
				
			
		|  | @ -37,13 +37,16 @@ recursively.  Return #t on success, #f otherwise." | |||
|   ;; in advance anyway. | ||||
|   (setenv "GIT_SSL_NO_VERIFY" "true") | ||||
| 
 | ||||
|   ;; We cannot use "git clone --recursive" since the following "git checkout" | ||||
|   ;; effectively removes sub-module checkouts as of Git 2.6.3. | ||||
|   (and (zero? (system* git-command "clone" url directory)) | ||||
|   (mkdir-p directory) | ||||
| 
 | ||||
|   (with-directory-excursion directory | ||||
|          (system* git-command "tag" "-l") | ||||
|          (and (zero? (system* git-command "checkout" commit)) | ||||
|     (invoke git-command "init") | ||||
|     (invoke git-command "remote" "add" "origin" url) | ||||
|     (if (zero? (system* git-command "fetch" "--depth" "1" "origin" commit)) | ||||
|         (invoke git-command "checkout" "FETCH_HEAD") | ||||
|         (begin | ||||
|           (invoke git-command "fetch" "origin") | ||||
|           (invoke git-command "checkout" commit))) | ||||
|     (when recursive? | ||||
|       ;; Now is the time to fetch sub-modules. | ||||
|       (unless (zero? (system* git-command "submodule" "update" | ||||
|  | @ -59,6 +62,6 @@ recursively.  Return #t on success, #f otherwise." | |||
|       ;; status of the Git repo.  Since we want a fixed output, this | ||||
|       ;; directory needs to be taken out. | ||||
|       (delete-file-recursively ".git") | ||||
|                 #t))))) | ||||
|       #t)) | ||||
| 
 | ||||
| ;;; git.scm ends here | ||||
|  |  | |||
		Reference in a new issue