This article contains a list of things I do to set up a new
As of 2020, some of this is obsolete. I’ve added notes to indocate what and why.
Create a directory for the new project:
mkdir newproject cd newproject
Initialize for git:
Tell git which types of files to ignore, e.g. compiled Python files:
printf '*.pyc\n*.pyo' >.gitignore
It is tempting to put often ignored files into your global
.gitignore. However, this creates problems when you are using the repo
for collaboration. In that case, it is best to put everything in the repo’s
Currently I don’t use filters anymore. I rely on my editor to add and modify a line to the file when it was created and when it was last modified.
filters we can change do keyword expansion during check-out.
A filter named
kw is defined in
[filter "kw"] clean = kwclean smudge = kwset
In this case, the scripts
kwset function like
rcs-style keyword expansion. The kwset script looks for the strings
$Revision$ and add respectively the commit date and short
hash, like this;
$Date: 2014-04-01 13:24:45 +0200 $ and
206bdb8 $. The kwclean script restores the original strings.
To activate this filter for e.g. Python source code, it has to be set in a
echo "*.py filter=kw" >.gitattributes
Do not enable filtering on binary files such as program executables, pictures such as JPEG and PNG or videos such as MP4! This will most probably screw up the file in question.
Another step that has to be taken is to force checkout of all modified files (or otherwise all files) after a commit. the former is performed by the update-modified-keywords.py script, while the latter is done by the update-all-keywords.py script.
To make use of one of these, the
post-commit hook is pointed to one of them:
cd .git/hooks ln -s ~/bin/update-modified-keywords post-commit
Start using the repo
Now you can create new files. After than the initial check-in is done:
git add . git commit -m "Initial check-in."
- Convert RCS history to git
- Removing big files from git history
- Making a subset of a git repository
- Keyword expansion with git