After your first successful conversion of a test repo, you fire it up in eclipse and check it out. That's when you see ... a lot of untracked changes! Oh yeah, all our .cvsignore files are useless :-)
Obviously we wanted a .gitignore at the root of our repo, from the beginning of time ... just like the catchphrase "there's an app for that", git will allow you to re-write your history so that it looks like the .gitignore was in every branch and tag since day one (How do I make a git commit in the past?). Obviously since this is a re-write, you need to do this as the last step before you publish your repo.
- create suitable file contents
- add it to your repo
- re-write all of the index trees in each commit to add the file
- reset your repo
Here's the example as fed into bash:
bash$ cat - >../gitignore <<EOF bin/ *~ *.rej *.bak *.patch javacore.* heapdump.* core.* Snap.* target/ EOF bash$ new_file=$(git hash-object -w ../gitignore) bash$ git filter-branch \ --index-filter \ 'git update-index --add --cacheinfo 100644 '"$new_file"' .gitignore' \ --tag-name-filter cat \ -- --all bash$ git reset --hard
Now I have a .gitignore at the root of my repo, and my status and EGit views are not cluttered with spurious untracked files. Rinse and repeat for more specialized .gitignores in various project directories that need them.