GIT

Git Useful

If you are here, you've seen the trailing whitespace errors shown by Git when committing changes. These errors can indeed cause problems. Not only when e-mailing patches but also when working with weird glue tools such as git-p4 which relies on patches to sync changes to Perforce. One way to deal with these is ignoring them. While that works, it does only until whitespace introduces unintended change in a patch and things explode. To avoid that it is better to keep your files clean from trailing whitespace which can be easily achieved by using a pre-commit hook in Git. This hook is a script which is ran before each commit to do something useful. In this case to clean trailing whitespace. To install such a hook you can do the following:

   In a terminal of some sort, go to your working git repository ($GIT_DIR):
    cd $GIT_DIR
    Now open a new file for writing:
    cat > .git/hooks/pre-commit
    Paste the following code in the terminal:
    #!/bin/sh

    if git-rev-parse --verify HEAD >/dev/null 2>&1 ; then
       against=HEAD
    else
       # Initial commit: diff against an empty tree object
       against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
    fi
    # Find files with trailing whitespace
    for FILE in `exec git diff-index --check --cached $against -- | sed '/^[+-]/d' | sed -r 's/:[0-9]+:.*//' | uniq` ; do
       # Fix them!
       sed -i 's/[[:space:]]*$//' "$FILE"
       git add "$FILE"
    done
    exit
    Hit "Enter" and then "Control+D" to end editing.
    Finally, make the file executable:
    chmod +x .git/hooks/pre-commit



Now every time you commit changes, Git will run the hook and clear trailing whitespace before actually saving the changes.

Comments

Popular posts from this blog

Is a Google Talk Contact Invisible?

IP Addresses

How Web Works