diff options
Diffstat (limited to 'forge/build/git.scm')
-rw-r--r-- | forge/build/git.scm | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/forge/build/git.scm b/forge/build/git.scm index e699822..2e3dc41 100644 --- a/forge/build/git.scm +++ b/forge/build/git.scm @@ -18,7 +18,7 @@ ;;; <https://www.gnu.org/licenses/>. (define-module (forge build git) - #:use-module ((guix build git) #:prefix guix-build:) + #:use-module (rnrs exceptions) #:use-module (guix build utils) #:use-module (guix store) #:use-module (guix utils) @@ -34,16 +34,21 @@ ;;; Code: -(define* (download-git-to-store store name url commit #:key (git-command "git")) - "Download COMMIT from git repository from URL to STORE under NAME -and return store path." +(define (download-git-to-store store name url branch) + "Download BRANCH of git repository from URL to STORE under NAME and +return store path. git and certificates should be in the environment." (call-with-temporary-directory (lambda (directory) - (unless (with-output-to-port (current-error-port) - (lambda () - (guix-build:git-fetch url commit directory - #:git-command git-command))) - (error "Error fetching git repository" url commit)) + (with-directory-excursion directory + (guard (condition ((invoke-error? condition) + (format (current-error-port) + "git-fetch: '~a~{ ~a~}' failed with exit code ~a~%" + (invoke-error-program condition) + (invoke-error-arguments condition) + (invoke-error-exit-status condition)) + (exit #f))) + (invoke "git" "clone" "--quiet" "--depth" "1" "--branch" branch url ".")) + (delete-file-recursively ".git")) (add-to-store store name #t "sha256" directory)))) (define latest-git-checkout |