Objects#
Creating#
- generic (make-object class id/name repository &key url type force target signature message log-message &allow-other-keys)#
-
(
make-object
(class (eq REFERENCE)) (name T) (repository T) &KEY (TYPE :OID) FORCE TARGET SIGNATURE (LOG-MESSAGE "")) -
(
make-object
(class (eq BRANCH)) (name T) (repository T) &KEY TARGET FORCE) -
(
make-object
(class (eq TAG)) (name T) (repository T) &KEY (TYPE :ANNOTATED) FORCE TARGET SIGNATURE MESSAGE) -
(
make-object
(class (eq REMOTE)) (name T) (repository T) &KEY URL)
Create objects within a Git repository, Please see the documentation for each implementing method.
-
(
Accessing#
- generic (get-object class id/name repository)#
-
(
get-object
(class (eq OBJECT)) (oid T) (repository T)) -
(
get-object
(class (eq BLOB)) (oid T) (repository T)) -
(
get-object
(class (eq TREE)) (oid T) (repository T)) -
(
get-object
(class (eq COMMIT)) (oid T) (repository T)) -
(
get-object
(class (eq COMMIT)) (commit COMMIT) (repository T)) -
(
get-object
(class (eq REFERENCE)) (name T) (repository T)) -
(
get-object
(class (eq TAG)) (name-or-oid T) (repository T)) -
(
get-object
(class (eq REMOTE)) (name T) (repository T)) -
(
get-object
(class (eq ODB-OBJECT)) (oid T) (odb ODB)) -
(
get-object
(class (eq ODB-OBJECT)) (oid T) (repository REPOSITORY))
Return an object of type
CLASS
from the object database. The lookup will use either an oid or a name to find the object.-
(
- generic (list-objects class repository &key test test-not)#
-
(
list-objects
(class (eq REFERENCE)) (repository T) &KEY TEST TEST-NOT) -
(
list-objects
(class (eq TAG)) (repository T) &KEY TEST TEST-NOT) -
(
list-objects
(class (eq REMOTE)) (repository T) &KEY TEST TEST-NOT) -
(
list-objects
(class (eq :OID)) (repository ODB) &KEY TEST TEST-NOT) -
(
list-objects
(class (eq :OID)) (repository REPOSITORY) &KEY TEST TEST-NOT)
-
(
Note that although we are looking up a commit we specify as class OBJECT. The advantage of specifying OBJECT instead of COMMIT is that you do not need to know that the SHA refers to a commit. If the SHA refers to a tag a tag will be returned.
However if we do not know the SHA-1 but we do know a reference, such as a branch name or tag. We can get to the commit in a slightly more cumbersome way. (A list of references is easy to get, see the previous section.)
Inspecting#
- generic (oid object)#
-
(
oid
(object CL-GIT::GIT-OBJECT)) -
(
oid
(reference REFERENCE)) -
(
oid
(object ODB-OBJECT))
Return the identifier of
OBJECT
. The identifier is typically theSHA
-1 checksum or hash code.Note that this is an integer, and not the string you typically see reported by Git.
To get the string representation use format like this:
(format nil “~40,’0X” (oid object))
or if you want lowercase hexadecimal digits:
(format nil “~(~40,’0X~)” (oid object))
-
(
- generic (full-name object)#
-
(
full-name
(object CL-GIT::GIT-OBJECT)) -
(
full-name
(object REFERENCE)) -
(
full-name
(tag TAG)) -
(
full-name
(remote REMOTE))
Returns the name of
OBJECT
, as a string.What exactly the name is depends on the type of the object.
-
(
- generic (short-name object)#
-
(
short-name
(object CL-GIT::GIT-OBJECT)) -
(
short-name
(object REFERENCE)) -
(
short-name
(tag TAG)) -
(
short-name
(remote REMOTE))
Returns the short name of
OBJECT
, as a string.What exactly the name is depends on the type of the object.
-
(
Errors#
Error conditions can be raised from libgit2 and will be converted into conditions instead of returning NIL values.
GIT> (get-object 'object 1
(open-repository #p"/home/russell/projects/ecl/"))
; Raises NOT-FOUND condition
For each of the possible libgit2 errors there is a different condition that will be raised.
- class general-error#
Generic error
- class not-found-error#
Requested object could not be found
- class exists-error#
Object exists preventing operation
- class ambiguous-error#
More than one object matches
- class buffer-error#
Output buffer too short to hold data
- class user-error#
GIT_EUSER is a special error that is never generated by libgit2 code. You can return it from a callback (e.g to stop an iteration) to know that it was generated by the callback and not by libgit2.
- class barerepo-error#
Operation not allowed on bare repository
- class unborn-branch-error#
HEAD refers to branch with no commits
- class unmerged-error#
Merge in progress prevented operation
- class non-fast-forward-error#
Reference was not fast-forwardable
- class invalid-spec-error#
Name/ref spec was not in a valid format
- class conflict-error#
Checkout conflicts prevented operation
- class locked-error#
Lock file prevented operation
- class modified-error#
Reference value does not match expected
- class auth-error#
Authentication error
- class certificate-error#
Server certificate is invalid
- class applied-error#
Patch/merge has already been applied
- class peel-error#
The requested peel operation is not possible
- class eof-error#
Unexpected EOF
- class invalid-error#
Invalid operation or input
- class uncommitted-error#
Uncommitted changes in index prevented operation
- class directory-error#
The operation is not valid for a directory
- class merge-conflict-error#
A merge conflict exists and cannot continue
- class mismatch-error#
Hashsum mismatch in object
- class index-dirty-error#
Unsaved changes in the index would be overwritten
- class apply-fail-error#
Patch application failedq
Control Flow Errors#
- class passthrough#
A user-configured callback refused to act
- class stop-iteration#
Signals end of iteration with iterator
- class retry#
Internal only