Your comments

Evan, here is my general workflow for dealing with this:


  1. In SmartGit, I have a shortcut key defined for "Skip Worktree" (done from Edit->Customize->Accelerators).  You can also do it from the Local menu as Thomas suggested above.
  2. Whenever a file pops up as changed that I don't care about, I'll toggle its Skip Worktree flag.
  3. I spend most of my time in Visual Studio, using its Team Explorer window to track current changes.  Having Skip Worktree toggled will make it not show up there, which really cleans things up.
  4. Back in SmartGit, I do have the "If selected, skipped files will be shown" flag set b/c I don't want to forget which files are skipped, as it can cause issues when switching between branches.  The list is clean in Visual Studio, showing only important changes, so I'm covered for what I normally care about.
  5. Whenever I'm ready to commit, I usually just do it in visual studio (which will have an uncluttered list), but you could obviously do it from SmartGit and sort by State (skipped ones will be separated), or just toggle the option to not show skipped files and you'll have a clean list there, too.  It's worth noting that files toggled with Skip Worktree cannot be committed...you can't accidentally do it.


Luckily for me, it is usually only a handful of files, not hundreds, so you'll have more work cut out for you...don't think even change sets would solve that.


The reason I chose to use "Skip Worktree" over "Assume Unchanged" is based on guidance from people in the #git IRC channel when I was asking about the difference...they suggested to stay away from Assume Unchanged if the files are actually changing (which they are).

I'll add another use-case for this.


Our project regularly has tracked files which change as a result of simply running the application.  The reason that they change are often outside of our control and are due to some quirk in whatever version of Unity we happen to currently be using.  The changes are meaningless and therefore we don't want to muddy up their history by actually committing them.


So, in SmartSvn, I would plop these annoying files into a Change Set called something like "TempIgnore" simply to sequester them away from meaningful changes..