| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
For now do nothing but chain to a project-specific hook.
|
|
|
|
|
|
| |
These hook scripts execute with bash and need LF newlines. Set eol=lf
to get LF newlines even when core.autocrlf is enabled. While at it,
also enable whitespace=indent-with-non-tab.
|
|
|
|
|
|
|
|
| |
When using "git commit --amend" to edit a merge commit message the
MERGE_HEAD is long gone. Also, some Git versions remove this file
before the commit-msg hook is called. In either case we should still
allow long summary lines that start in 'Merge ' just as we do for
'Revert '.
|
|
|
|
|
|
|
|
|
|
| |
Read from the project ".hooks-config" a configuration value
hooks.start.commit-msg
hooks.start.pre-commit
hooks.start.prepare-commit-msg
to run from our respective hook before its main checks.
|
|
|
|
|
| |
Factor child execution into a separate "hooks_child" function so it can
be re-used.
|
|
|
|
|
|
| |
Allow projects to configure hooks with a 'git config'-formatted file at
the top of their source tree called ".hooks-config". This avoids use of
bash-specific syntax and makes configuration declarative.
|
|
|
|
| |
Remove hooks-chain.bash and place its content in hooks-config.bash.
|
|
|
|
|
|
|
| |
Some hooks were getting referenced directly via $GIT_DIR/hooks while at
other times getting referenced relative via ${BASH_SOURCE%/*}. By making
all references relative then these hooks can reside in a different folder
and still be daisy-chained by other hooks.
|
|
|
|
|
|
|
|
| |
Although it seems reasonable to expect GIT_DIR to be set when
hooks are invoked, the "git help hooks" documentation does not
guarantee it. On msysGit 1.7.8 (and perhaps others) "git gui"
runs prepare-commit-msg without setting GIT_DIR. Set GIT_DIR
at the beginning of each commit hook if it is not already set.
|
|
|
|
|
|
|
|
| |
The "git merge" command generates its own commit message and does not
invoke the commit-msg hook. Fortunately it invokes prepare-commit-msg
so teach it to call the gerrit/commit-msg hook for merges.
Suggested-by: Chris Harris <chris.harris@kitware.com>
|
|\ |
|
| |
| |
| |
| |
| |
| |
| | |
These pre-commit hooks where added to the ITK specific hook chain since all
projects do not use them.
Change-Id: Ifcb41645374914c4f30f7c5f2feb2e5d40a4b3e3
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This is an ITK specific check. It is already implemented in
the ITK Utilities/Hooks/pre-commit script executed in the hook chain.
This should allow commiting when on the ITK release branch where .txx
files still currently exist.
Change-Id: I1115a2129beb89d6657d599aa6e72bb6515dfca3
|
| |
| |
| |
| |
| |
| |
| | |
A transition occurred in the toolkit to move all .txx files to .hxx files.
This prevents accidental additions of or renames to .txx files.
Change-Id: Id4ace9cfca2c56506d93396366d146173e015003
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
If a local hook chain rule is not in the local git configuration
check for a value defined in .hooks-config.bash:
hooks_chain_pre_commit
hooks_chain_commit_msg
hooks_chain_prepare_commit_msg
This allows project to configure chained hooks without adding any
values to the local git configuration. Since the project hooks
config can be versioned with the hook scripts it references this
ensures a consistent state.
|
| |
| |
| |
| |
| |
| | |
Look for a ".hooks-config.bash" file at the top of the work tree.
Load it in each hook to get per-project configuration. Currently
we do not define any config options, but this adds the framework.
|
|/
|
|
|
| |
These checks can be added in projects that want them using the
pre-commit hook chaining.
|
|
|
|
|
| |
The return code from 'die' was absorbed inside a subshell on the
right-hand side of a pipeline. Propagate it out to the main script.
|
|
|
|
|
| |
Reject commits that rewind a submodule relative to any parent (HEAD or
MERGE_HEAD).
|
|
|
|
|
|
| |
If "git merge" brings in a submodule update then allow it without
requiring the extra step added in commit 48e72dd1 (Check submodules
staged with other changes, 2010-08-10).
|
| |
|
|
|
|
|
| |
Once our temporary COMMIT_MSG file has been removed do not advise the
author to use the file to continue editing the message.
|
|
|
|
| |
Gerrit recognizes the Change-Id line only if it appears in the footer.
|
| |
|
|
|
|
|
|
| |
Lookup the whitespace attribute for each modified file and dispatch
custom checks as necessary. Currently the only custom check is the
approximate tab-in-indent check for Git < 1.7.2.
|
|
|
|
|
|
|
| |
Revert commits always have longer first lines than the commit they
revert. Do not reject those that happen to go over the threshold. It
is much simpler if the "git revert" command creates the commit without
error.
|
|
|
|
|
|
|
|
| |
Chain the pre-commit, commit-msg, and prepare-commit-msg hooks to
locally configured scripts. Interpret relative paths with respect to
the working directory where the hooks run (top of work tree). This
allows project setup scripts to add project-specific checks for each of
these hooks.
|
|\ |
|
|/
|
|
|
|
|
|
|
|
|
| |
At this time, a contributor won't be able to commit a change if KWStyle
is not installed on the computer. KWStyle is not a very common program,
and so is likely to have to be installed by hand. This increase the work
needed to be able to contribute to ITK.
With this change a warning is displayed if KWStyle is not installed
but the commit is not blocked.
Change-Id: I0719ee5ac6e048120504bbdc4dc022043c0f0ded
|
|\ |
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
uncrustify (uncrustify.sourceforge.net) is applied to changed files prior to
commit.
This feature is off by default. To enable this behavior, set
git config hooks.uncrustify true
By default, the behavior of git-mergetool is used to review the changes
uncrustify makes before they are added to the commit. For more information on
this behavior, see
git help mergetool
KWStyle is run on the changed C++ files and the commit is aborted if the files
do not pass the test. A file similar to the original is saved with a '*.kws'
extension so that line numbers referenced in the error message can be examined.
The test is off by default. To enable this behavoir, set
git config hooks.KWStyle true
Project specific uncrustify and KWStyle configuration files are set with 'git
config'. For example,
git config hooks.uncrustify.conf path/to/uncrustify.conf
git config hooks.KWStyle.conf path/to/KWStyle.conf
git config hooks.KWStyle.overwriteRulesConf path/to/overwrite.conf # optional
If the appropriate values have not been set, die() is called. An
optional KWStyle overwrite rules file can also been configured.
The files on which to run the style checks must also be identified in the
repository's '.gitattributes'. For example,
*.h hooks.style
*.cpp hooks.style
Or, to only enable a subset of style hooks,
*.h hooks.style=KWStyle
*.cpp hooks.style=KWStyle,uncrustify
Change-Id: Ia6b2d4136af3002eb0ec5d36f03c50df928917f4
|
|
|
|
|
|
|
| |
If hooks.submodule is 'false' disable all checks. If an individual
hooks.<module>.update is 'true' then accept any update for that module.
Leave these options out of the hints printed. Developers that know what
they are doing will be able to find them by reading the hook source.
|
|
|
|
|
| |
Merge commits can have long subject lines because they name other
branches. Accept such messages as a special case for merge commits.
|
| |
|
|
|
|
|
| |
Add a Gerrit Change-Id header if hooks.GerritId is true. Print help if
the option is not set and a remote URL looks like Gerrit.
|
| |
|
| |
|
|
|
|
| |
This script uses bashisms like $() so we need a real bash.
|
|
|
|
|
| |
Currently the hook is unused but later we will invoke it from the main
commit-msg hook.
|
|
|
|
|
| |
Check for leading TABs in files marked with the whitespace=tab-in-indent
attribute instead of hard-coding a list of file extensions.
|
| |
|
| |
|
|
|
|
|
| |
Check for a 'hooks.MaxObjectKiB' attribute to set the limit of specific
files or patterns.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since Git does not automatically update submodule checkouts when
checking out a new version in the work tree, it is common to have
locally modified submodule references. Therefore it is easy to stage
such modifications with other changes by accident, especially with
commands like "git add -u" or "git commit -a". The result is almost
always wrong if the submodule change is not intended.
Prevent such mistakes by requiring an extra step to commit submodule
link updates with other changes. When this case is detected, print a
message describing the situation and provide cut-and-paste instructions
to proceed.
|
|
|
|
|
|
|
|
|
|
| |
On Solaris, where /bin/sh is actually sh, not bash, some expressions
like $() are not supported. Git's own scripts on this machine are
configured to use "#!/bin/bash". Change our shebang line to
#!/usr/bin/env bash
which should work almost everywhere.
|
| |
|
|
|
|
|
| |
Fix logic to call check_size for all updated index entries, not just
those whose mode changed.
|
|
|
|
|
|
|
|
|
| |
Check blob and tree object sizes to prevent large objects from entering
the repository. The default limit is 1024 KiB, but it can be set with
git config hooks.MaxObjectKiB $KiB
locally, or disabled by using 0 KiB.
|
|
|
|
| |
Keep all mode-related check helpers in the "mode_" namespace.
|
|
|
|
|
|
|
| |
Check new files and files whose mode changes to verify that each file
mode matches the content of the file. The mode of a file must be
executable if and only if the file looks executable (name ends in a
Windows executable extension or content starts with a shebang line).
|