summaryrefslogtreecommitdiff
path: root/.cask/30.2/bootstrap/git-20140128.1041/git.el
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-04-05 06:15:13 -0500
committerCraig Jennings <c@cjennings.net>2026-04-05 06:15:13 -0500
commit16f67628b09a67882e735586bf7ea56eb7651644 (patch)
treeb4927a4b7c7e1a24e6b083f1b3679a17a2a83e46 /.cask/30.2/bootstrap/git-20140128.1041/git.el
parenteb01b3d24739e916d9dca33f5f039650a9de8457 (diff)
chore: gitignore and untrack build artifacts, vendored assets, personal files
Untrack .cask/, .localrepo/ (61M), emojis/ (7.2M), inbox/, todo.org, v2mom.org, .time-zones.el. Move test-reporter-spec.org to docs/ (already gitignored). Reduces tracked repo size significantly.
Diffstat (limited to '.cask/30.2/bootstrap/git-20140128.1041/git.el')
-rw-r--r--.cask/30.2/bootstrap/git-20140128.1041/git.el279
1 files changed, 0 insertions, 279 deletions
diff --git a/.cask/30.2/bootstrap/git-20140128.1041/git.el b/.cask/30.2/bootstrap/git-20140128.1041/git.el
deleted file mode 100644
index 5adefae1..00000000
--- a/.cask/30.2/bootstrap/git-20140128.1041/git.el
+++ /dev/null
@@ -1,279 +0,0 @@
-;;; git.el --- An Elisp API for programmatically using Git
-
-;; Copyright (C) 2013 Johan Andersson
-
-;; Author: Johan Andersson <johan.rejeep@gmail.com>
-;; Maintainer: Johan Andersson <johan.rejeep@gmail.com>
-;; Package-Version: 20140128.1041
-;; Package-Revision: 8b7f1477ef36
-;; Keywords: git
-;; URL: http://github.com/rejeep/git.el
-;; Package-Requires: ((s "1.7.0") (dash "2.2.0") (f "0.10.0"))
-
-;; This file is NOT part of GNU Emacs.
-
-;;; License:
-
-;; This program is free software; you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 3, or (at your option)
-;; any later version.
-
-;; This program is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
-
-;;; Code:
-
-;; Todo: no-pager
-
-(require 's)
-(require 'dash)
-(require 'f)
-
-(defvar git-executable
- (executable-find "git")
- "Git executable.")
-
-(defvar git-repo nil
- "Path to current working repo.")
-
-(defvar git-args nil
- "List of args to include when running git command.")
-
-(defconst git-stash-re "^\\(.+?\\): \\(?:WIP on\\|On\\) \\(.+\\): \\(.+\\)$"
- "Regular expression matching a stash.")
-
-(put 'git-error 'error-conditions '(error git-error))
-(put 'git-error 'error-message "GIT Error")
-
-(defun git-error (string &rest args)
- "Signal a GIT error.
-
-Signal an error with `git-error' type.
-
-STRING is a `format' string, and ARGS are the formatted objects."
- (signal 'git-error (list (apply #'format string args))))
-
-(defun git-run (command &rest args)
- "Run git COMMAND with ARGS."
- (let ((default-directory (f-full git-repo)))
- (with-temp-buffer
- (let ((exit-code
- (apply
- 'call-process
- (append
- (list git-executable nil (current-buffer) nil)
- (git--args command args)))))
- (if (zerop exit-code)
- (buffer-string)
- (git-error
- "Error running command: %s %s\n%s"
- git-executable
- (s-join " " (git--args command args))
- (buffer-string)))))))
-
-(defun git-repo? (directory)
- "Return true if there is a git repo in DIRECTORY, false otherwise."
- (or
- (f-dir? (f-expand ".git" directory))
- (and
- (f-dir? (f-expand "info" directory))
- (f-dir? (f-expand "objects" directory))
- (f-dir? (f-expand "refs" directory))
- (f-file? (f-expand "HEAD" directory)))))
-
-(defun git-branch? (branch)
- "Return true if there's a branch called BRANCH."
- (-contains? (git-branches) branch))
-
-(defun git-tag? (tag)
- "Return true if there's a tag called TAG."
- (-contains? (git-tags) tag))
-
-(defun git-on-branch ()
- "Return currently active branch."
- (condition-case err
- (git--clean (git-run "rev-parse" "--abbrev-ref" "HEAD"))
- (git-error
- (git-error "Repository not initialized"))))
-
-(defun git-on-branch? (branch)
- "Return true if BRANCH is currently active."
- (equal branch (git-on-branch)))
-
-(defun git-add (&rest files)
- "Add PATH or everything."
- (git-run "add" (or files ".")))
-
-(defun git-branch (branch)
- "Create BRANCH."
- (if (git-branch? branch)
- (git-error "Branch already exists %s" branch)
- (git-run "branch" branch)))
-
-(defun git-branches ()
- "List all available branches."
- (-map
- (lambda (line)
- (if (s-starts-with? "*" line)
- (substring line 2)
- line))
- (git--lines (git-run "branch"))))
-
-(defun git-checkout (ref)
- "Checkout REF."
- (git-run "checkout" ref))
-
-(defun git-clone (url &optional dir)
- "Clone URL to DIR (if present)."
- (git-run "clone" url dir))
-
-(defun git-commit (message &rest files)
- "Commit FILES (or added files) with MESSAGE."
- (git-run "commit" (or files "-a") "--message" message files))
-
-(defun git-fetch (&optional repo)
- "Fetch REPO."
- (git-run "fetch" repo))
-
-(defun git-init (&optional dir bare)
- "Create new Git repo at DIR (or `git-repo').
-
-If BARE is true, create a bare repo."
- (let ((git-repo (or dir git-repo)))
- (git-run "init" (and bare "--bare"))))
-
-;; Todo: The solution used here is not bulletproof. For example if the
-;; message contains a pipe, the :message will only include everything
-;; before that pipe. Figure out a good solution for this.
-(defun git-log (&optional branch)
- "Log history on BRANCH."
- (let ((logs (git--lines (git-run "log" "--format=%h|%an|%ae|%cn|%ce|%ad|%s"))))
- (-map
- (lambda (log)
- (let ((data (s-split "|" log)))
- (list
- :commit (nth 0 data)
- :author-name (nth 1 data)
- :author-email (nth 2 data)
- :comitter-name (nth 3 data)
- :comitter-email (nth 4 data)
- :date (nth 5 data)
- :message (nth 6 data))))
- logs)))
-
-(defun git-config (option &optional value)
- "Set or get config OPTION. Set to VALUE if present."
- (condition-case err
- (git--clean (git-run "config" option value))
- (git-error)))
-
-(defun git-pull (&optional repo ref)
- "Pull REF from REPO."
- (git-run "pull" repo ref))
-
-(defun git-push (&optional repo ref)
- "Push REF to REPO."
- (git-run "push" repo ref))
-
-(defun git-remote? (name)
- "Return true if remote with NAME exists, false otherwise."
- (-contains? (git-remotes) name))
-
-(defun git-remotes ()
- "Return list of all remotes."
- (git--lines (git-run "remote")))
-
-(defun git-remote-add (name url)
- "Add remote with NAME and URL."
- (git-run "remote" "add" name url))
-
-(defun git-remote-remove (name)
- "Remove remote with NAME."
- (if (git-remote? name)
- (git-run "remote" "remove" name)
- (git-error "No such remote %s" name)))
-
-(defun git-reset (&optional commit mode)
- "Reset to COMMIT with MODE."
- (git-run "reset" (if mode (concat "--" (symbol-name mode))) commit))
-
-(defun git-rm (path &optional recursive)
- "Remove PATH.
-
-To remove directory, use RECURSIVE argument."
- (git-run "rm" path (and recursive "-r")))
-
-(defun git-stash (&optional message)
- "Stash changes in a dirty tree with MESSAGE.
-
-If a stash was created, the name of the stash is returned,
-otherwise nil is returned."
- (let ((before-stashes (git-stashes)) after-stashes)
- (git-run "stash" "save" message)
- (setq after-stashes (git-stashes))
- (if (> (length after-stashes) (length before-stashes))
- (plist-get (car after-stashes) :name))))
-
-(defun git-stashes ()
- "Return list of stashes."
- (let ((stashes (git--lines (git-run "stash" "list"))))
- (-map
- (lambda (stash)
- (let ((matches (s-match git-stash-re stash)))
- (list :name (nth 1 matches)
- :branch (nth 2 matches)
- :message (nth 3 matches))))
- stashes)))
-
-(defun git-stash-pop (&optional name)
- "Apply and remove stash with NAME (or first stash)."
- (git-run "stash" "pop" name))
-
-(defun git-stash-apply (&optional name)
- "Apply and keep stash with NAME (or first stash)."
- (git-run "stash" "apply" name))
-
-(defun git-tag (tag)
- "Create TAG."
- (if (git-tag? tag)
- (git-error "Tag already exists %s" tag)
- (git-run "tag" tag)))
-
-(defun git-tags ()
- "Return list of all tags."
- (git--lines (git-run "tag")))
-
-(defun git-untracked-files ()
- "Return list of untracked files."
- (git--lines
- (git-run "ls-files" "--other" "--exclude-standard")))
-
-(defun git-staged-files ()
- "Return list of staged files."
- (git--lines
- (git-run "diff" "--cached" "--name-only")))
-
-
-;;;; Helpers
-
-(defun git--lines (string)
- (-reject 's-blank? (-map 's-trim (s-lines string))))
-
-(defun git--clean (string)
- (s-presence (s-trim string)))
-
-(defun git--args (command &rest args)
- (-flatten (-reject 'null (append (list "--no-pager" command) args git-args))))
-
-
-(provide 'git)
-
-;;; git.el ends here