#!/bin/sh id=$1 branch=$2 echo "Committed $id in $branch" | mail user@host
cg-commit - commit into a git repository
cg-commit [-m MESSAGE]… [-e] [-c COMMIT_ID] [OTHER_OPTIONS] [FILE]… [< MESSAGE]
Commits your changes to the GIT repository. Accepts the commit message from stdin. If the commit message is not modified the commit will be aborted.
Note that you can undo a commit by the cg-admin-uncommit(1) command, but that is possible only under special circumstances. See the CAVEATS section of its documentation.
Each commit has two user identification fields - commit author and committer. By default, it is recorded that you authored the commit, but it is considered a good practice to change this to the actual author of the change if you are merely applying someone else's patch. It is always recorded that you were the patch committer.
The commit author is determined by examining various sources in this order:
--author (see OPTIONS)
GIT_AUTHOR_* (see ENVIRONMENT)
.git/author (see FILES)
System information: The author name defaults to the GECOS field of your /etc/passwd entry, which is taken almost verbatim. The author email defaults to your username@hostname.domainname (but you should change this to the real email address you use if it is any different).
Set the commit author information according to the argument instead of your environment, .git/author, or user information.
The AUTHOR_STRING format is Author Name <author@email> Date. The author name and date is optional, only the email is required to be always present (e.g. --author "<pasky@ucw.cz>" will use the current date and the real name set for your system account (usually in the gecos field), but a different email address).
Copy the commit from a given commit ID (that is the author information and the commit message - NOT committer information). This option is typically used when replaying commits from one lineage or repository to another - see also cg-patch -C.
Make cg-commit(1) ignore the cache and just commit the thing as-is. Note, this is used internally by Cogito when merging, and it is also useful when you are performing the initial commit manually. This option does not make sense when files are given on the command line.
Specify the commit message, which is used instead of starting up an editor (if the input is not stdin, the input is appended after all the -m messages). Multiple -m parameters are appended to a single commit message, each as separate paragraph.
Include commit message from a file (this has the same effect as if you would cat it to stdin).
Force the editor to be brought up even when -m parameters were passed to cg-commit(1).
Force the editor to be brought up and do the commit even if the default commit message is not changed.
Force the commit even when there's "nothing to commit", that is the tree is the same as the last time you committed, no changes happened. This also forces the commit even if committing is blocked for some reason.
Don't add the files to the object database, just update the caches and the commit information. This is for special purposes when you might not actually _have_ any object database. This option is normally not interesting.
Show changes being commited as a patch appended to the commit message buffer. Changes made to the patch will be reapplied before completing the commit. This only makes sense if you are going to edit the commit message interactively.
Be quiet in case there's "nothing to commit", and silently exit returning success. In a sense, this is the opposite to -f.
Add Signed-off-by line at the end of the commit message. Optionally, specify the exact name and email to sign off with by passing: --signoff="Author Name <user@example.com>".
Print usage summary.
Print user manual. The same as found in cg-commit(1).
If exists, it should be in the format Person Name <email@addy> (both parts are optional) and the GIT_AUTHOR_* environment variables will be set accordingly - if they are not present in the environment yet!
If the file exists it will be used as a template when creating the commit message. The template file makes it possible to automatically add Signed-off-by line to the log message.
If the file exists and is executable it will be executed upon completion of the commit. The script is passed two arguments. The first argument is the commit ID and the second is the branchname. A sample commit-post script might look like:
#!/bin/sh id=$1 branch=$2 echo "Committed $id in $branch" | mail user@host
See the Commit author section above for details about the name/email/date environment variables meaning and default values.
Author's name.
Author's e-mail address.
Date, useful when applying patches submitted over e-mail.
Committer's name. It defaults to the same as GIT_AUTHOR_NAME.
Committer's e-mail address. It defaults to the same as GIT_AUTHOR_EMAIL. The recommended policy is not to change this, though - it may not be necessarily a valid e-mail address, but its purpose is more to identify the actual user and machine where the commit was done. However, it is obviously ultimately a policy decision of a particular project to determine whether this should be a real e-mail or not.
The editor used for entering revision log information.
The following GIT configuration file variables are recognized:
If set to "true" and you are committing a merge, the post-hook will be called for all the merged commits in sequence (the earliest first). Otherwise, the hook will be called only for the merge commit.
Copyright © Petr Baudis, 2005