I've recently started work on an existing project that wasn't using a version control system. I've used Subversion extensively, but management wanted to use Git. I am learning it, and learning to love it. For my own sanity, I created a Git repository on my Windows 7 machine based on the files I downloaded from the development environment (Linux) that had been set up for me. I was happily committing changes to master, but found that I had to frequently change my development priorities. I realized that branching was the best way to go to accommodate that. I've adopted "A successful Git branching model", and I am liking it so far.
CHALLENGES
One: The project has symbolic links that are now broken in my local Git repository. I want to fix them, properly getting them into the Git repository. I have tar archives available of the production code, but I don't know how to accomplish a sane merge of that. On Windows I use WinMerge but that doesn't preserve the symbolic links. Once I have the repository set up on my development server, do I simply abandon commits from my Windows machine and only pull from the server?
Two: The project has a file path that goes all the way to the file system root. I've seen some articles about people using Git for versioning config files and having a repository at the file system root, but I haven't seen a good example of a .gitignore
file that would make this as painless as possible. What's a good course of action for this?
UPDATE TO #2
These rules are accomplishing what I need:
/* # ignore everything in root by default
!.gitignore # allow this file
!/library # allow library
!/home # allow user directories
/home/* # not every user
!/home/user # just this user
/home/user/* # not all the user's files
!/home/user/public_html # just the public_html files
!/home/user/www # symbolic link to public_html