Commits on Source (61)
-
Brad King authored
These hooks perform some basic commit-time checks to keep history clean.
-
Brad King authored
-
Brad King authored
-
Brad King authored
Store a backup copy of the input message. Remove the backup only on success. On failure, tell the user how to use and edit the message without having to enter it from scratch.
-
Brad King authored
Our style guidelines do not permit indentation by TABs.
-
Brad King authored
Commit "Reject leading TABs" added use of shell syntax of the form $(case "..." in a) ... ;; esac) Some shell implementations fail to recognize that the ')' in the case label is not the end of the '$(' expression. Work around the problem by moving the case block into a separate function outside the '$()' expression.
-
Brad King authored
Stop processing the commit message text at a "diff --git" line. Such lines occur when the user commits with the "-v" option. We should not check the patch content; it will be stripped by Git anyway.
-
Brad King authored
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).
-
Brad King authored
Keep all mode-related check helpers in the "mode_" namespace.
-
Brad King authored
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.
-
Brad King authored
Fix logic to call check_size for all updated index entries, not just those whose mode changed.
-
Brad King authored
-
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.
-
Brad King authored
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.
-
Brad King authored
Check for a 'hooks.MaxObjectKiB' attribute to set the limit of specific files or patterns.
-
Brad King authored
-
Brad King authored
-
Brad King authored
Check for leading TABs in files marked with the whitespace=tab-in-indent attribute instead of hard-coding a list of file extensions.
-
Brad King authored
Currently the hook is unused but later we will invoke it from the main commit-msg hook.
-
Brad King authored
This script uses bashisms like $() so we need a real bash.
-
Brad King authored
-
Brad King authored
-
Brad King authored
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.
-
Brad King authored
-
Brad King authored
Merge commits can have long subject lines because they name other branches. Accept such messages as a special case for merge commits.
-
Brad King authored
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.
-
thewtex authored
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
-
Brad King authored
-
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
-
Brad King authored
-
Brad King authored
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.
-
Brad King authored
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.
-
Brad King authored
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.
-
Brad King authored
-
Brad King authored
Gerrit recognizes the Change-Id line only if it appears in the footer.
-
Brad King authored
Once our temporary COMMIT_MSG file has been removed do not advise the author to use the file to continue editing the message.
-
Brad King authored
-
Brad King authored
Reject commits that rewind a submodule relative to any parent (HEAD or MERGE_HEAD).
-
Brad King authored
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.
-
Matt McCormick authored
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
-
Brad King authored
These checks can be added in projects that want them using the pre-commit hook chaining.
-
Brad King authored
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.
-
Brad King authored
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.
-
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
-
These pre-commit hooks where added to the ITK specific hook chain since all projects do not use them. Change-Id: Ifcb41645374914c4f30f7c5f2feb2e5d40a4b3e3
-
Brad King authored
-
Brad King authored
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>
-
Brad King authored
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.
-
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.
-
Brad King authored
Remove hooks-chain.bash and place its content in hooks-config.bash.
-
Brad King authored
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.
-
Brad King authored
Factor child execution into a separate "hooks_child" function so it can be re-used.
-
Brad King authored
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.
-
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 '.
-
Brad King authored
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.
-
Brad King authored
For now do nothing but chain to a project-specific hook.
-
Brad King authored
On Windows, "chmod" does not work, so print the instructions to use "git update-index --chmod=" instead.
-
For now do nothing but chain to a project-specific hook.
-
-
Brad King authored
Showing
- .gitattributes 2 additions, 0 deletions.gitattributes
- .gitignore 1 addition, 0 deletions.gitignore
- LICENSE 202 additions, 0 deletionsLICENSE
- NOTICE 8 additions, 0 deletionsNOTICE
- commit-msg 151 additions, 0 deletionscommit-msg
- gerrit/commit-msg 105 additions, 0 deletionsgerrit/commit-msg
- hooks-config.bash 66 additions, 0 deletionshooks-config.bash
- post-commit 21 additions, 0 deletionspost-commit
- pre-commit 346 additions, 0 deletionspre-commit
- pre-push 24 additions, 0 deletionspre-push
- prepare-commit-msg 33 additions, 0 deletionsprepare-commit-msg
.gitattributes
0 → 100644
.gitignore
0 → 100644
LICENSE
0 → 100644
NOTICE
0 → 100644
commit-msg
0 → 100755
gerrit/commit-msg
0 → 100755
hooks-config.bash
0 → 100644
post-commit
0 → 100755
pre-commit
0 → 100755
pre-push
0 → 100755
prepare-commit-msg
0 → 100755