Skip to content

Instantly share code, notes, and snippets.

@matthewbauer
Created March 31, 2018 23:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save matthewbauer/5af3402865fc262d32dd1add41ac9370 to your computer and use it in GitHub Desktop.
Save matthewbauer/5af3402865fc262d32dd1add41ac9370 to your computer and use it in GitHub Desktop.
(require 'magit-process)
(defun shallow-checkout (branch &optional directory)
(interactive (list (magit-read-string-ns "Branch") default-directory))
(unless (file-exists-p (expand-file-name branch directory))
(magit-run-git "clone" "--branch" branch
"--single-branch" "--shared"
(expand-file-name "git" directory)
(expand-file-name branch directory))))
(defun shallow-clone (repository directory)
(interactive
(let ((url (magit-read-string-ns "Clone repository")))
(list url (read-directory-name
"Clone to: " nil nil nil
(and (string-match "\\([^/:]+?\\)\\(/?\\.git\\)?$" url)
(match-string 1 url))))))
(setq directory (file-name-as-directory (expand-file-name directory)))
(mkdir directory)
(magit-run-git-async "clone" "--bare" repository
(magit-convert-filename-for-git
(expand-file-name "git" directory))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment