Repositories¶
- CLOS class repository¶
- Superclass:
[‘T’]
- Metaclass:
standard-class
Repository is the root type, it contains the object database.
Creating¶
- Generic (init-repository path/name &key bare)¶
-
Create a new Git repository.
PATH/NAMEcan be either an instance of aSTRINGor aPATHNAME. A truthful value for the keyBAREwill init a repository that does not have a local checkout, it’s normally appropriate for the basename of the path to end in ‘.git’. AREPOSITORYinstance is returned.GIT> (init-repository #p"/tmp/test-repo/") #<REPOSITORY 7FFFE8006800 {1005F3CE43}>
- Generic (empty-p repository)¶
-
(
empty-p(repository REPOSITORY))
Return
Tif the repository is empty and contains no references.GIT> (empty-p (open-repository #p"/tmp/test-repo/")) T
-
(
Bare¶
Bare repositories can be created by passing a truthful value to the key argument BARE when initialising a repository.
GIT> (init-repository #p"/tmp/test-bare/" :bare t)
#<REPOSITORY 7FFFE8008CD0 {10062DE723}>
Whether an existing repository is bare can be determined using the bare-p method.
- Generic (bare-p repository)¶
-
(
bare-p(repository REPOSITORY))
Return
Tif the repository is bare.GIT> (bare-p (open-repository #p"/tmp/test-bare/")) T
-
(
Accessing¶
- Generic (open-repository path/name)¶
-
Open an existing repository located at
PATH/NAME. The repository object will be garbage collected. If it’s freed explicitly then all related objects will have undefined behaviour.GIT> (open-repository #p"/home/russell/projects/ecl/") #<REPOSITORY 7FFFE8003E00 {1004CCDBA3}> GIT> (open-repository "/home/russell/projects/ecl/") #<REPOSITORY 7FFFE8004000 {1004D617F3}>
- Macro (with-repository (var pathname-or-string) &body body)¶
Evaluates the body with
VARbound to a newly opened located repository atPATHNAME-OR-STRING. Repository is freed upon exit of this scope so any objects that leave this scope will no longer be able to access the repository.- Parameters:
pathname-or-string – the location of the repository.
path – the path to the git repository.
body – the body of the macro.
CL-GIT> (with-repository (repository #p"/home/russell/projects/ecl/") (prin1 repository) nil) #<REPOSITORY 7FFFE8003E00 {1003880DA3}> NIL
Checkout¶
Head¶
- Generic (repository-head repository)¶
-
(
repository-head(repository REPOSITORY))
Returns the resolved reference for
HEAD.-
(
- Generic (head-detached-p repository)¶
-
(
head-detached-p(repository REPOSITORY))
Returns
Tif theHEADin the repository is detached, in other words, theHEADreference is not a symbolic reference to a branch, but a direct commit.-
(
- Generic (head-unborn-p repository)¶
-
(
head-unborn-p(repository REPOSITORY))
Returns
Tif theHEADpoints to a commit that doesn’t exist.-
(
Path¶
- Generic (repository-path object)¶
-
(
repository-path(repository REPOSITORY))
Return the path to the repository. In the case where the repository isn’t bare then it will be the location of the .git directory.
-
(
- Generic (repository-workdir object)¶
-
(
repository-workdir(repository REPOSITORY))
Return the path to the root of the repository.
-
(
Status¶
- Function (repository-status repository)¶
Return the current status values for each of the object in the repository. For each element of the list the
FIRSTis the name of the file and theCDRis a list of keywords that containing the current state of the file. Possible states are::CURRENT:INDEX-NEW:INDEX-MODIFIED:INDEX-DELETED:INDEX-RENAMED:INDEX-TYPECHANGE:WORKTREE-NEW:WORKTREE-MODIFIED:WORKTREE-DELETED:WORKTREE-TYPECHANGE:WORKTREE-RENAMED:WORKTREE-UNREADABLE:IGNOREDor:CONFLICTEDCL-GIT> (with-repository (repository #p"/home/russell/projects/lisp/cl-git/") (repository-status repository)) (("src/status.lisp" :CURRENT :WORKTREE-MODIFIED) ("src/package.lisp" :CURRENT :WORKTREE-MODIFIED) ("fabfile.pyc" :CURRENT :IGNORED) ("doc/repositories.rst" :CURRENT :WORKTREE-MODIFIED) ("doc/cl-git.html" :CURRENT :WORKTREE-NEW) ("doc/.installed.cfg" :CURRENT :IGNORED))
Configuration¶
Configuration details of a particular repository can be done with
the GIT-CONFIG method.
- Method (git-config (object REPOSITORY) &key level)¶
Open a Git config.
LEVELcan be used to limit the git config to a specific level. Possible levels are:HIGHEST-LEVEL:SYSTEM:XDG:GLOBALor:LOCALSee also:
git-config