Patch Set 9:

I would just fix the problem with the platform dependent path separator. In other places e.g. RepositoriesView we also show the full path to the GITFOLDER.

When playing around I hit the following error quite frequently:


!ENTRY org.eclipse.core.jobs 4 2 2010-06-05 15:41:12.984
!MESSAGE An internal error occurred during: "Git Resource Synchronization".
!STACK 0
java.util.regex.PatternSyntaxException: Unexpected internal error near index 1
\
 ^
	at java.util.regex.Pattern.error(Pattern.java:1713)
	at java.util.regex.Pattern.compile(Pattern.java:1466)
	at java.util.regex.Pattern.<init>(Pattern.java:1133)
	at java.util.regex.Pattern.compile(Pattern.java:823)
	at java.lang.String.replaceAll(String.java:2189)
	at org.eclipse.egit.ui.internal.synchronize.GitResourceVariantTree.getMembersAndStore(GitResourceVariantTree.java:399)
	at org.eclipse.egit.ui.internal.synchronize.GitResourceVariantTree.members(GitResourceVariantTree.java:105)
	at org.eclipse.team.core.variants.AbstractResourceVariantTree.mergedMembers(AbstractResourceVariantTree.java:200)
	at org.eclipse.team.core.variants.AbstractResourceVariantTree.collectChanges(AbstractResourceVariantTree.java:173)
	at org.eclipse.team.core.variants.AbstractResourceVariantTree.collectChanges(AbstractResourceVariantTree.java:113)
	at org.eclipse.team.core.variants.AbstractResourceVariantTree.refresh(AbstractResourceVariantTree.java:90)
	at org.eclipse.team.core.variants.AbstractResourceVariantTree.refresh(AbstractResourceVariantTree.java:54)
	at org.eclipse.team.core.variants.ResourceVariantTreeSubscriber.refresh(ResourceVariantTreeSubscriber.java:159)
	at org.eclipse.team.core.variants.ResourceVariantTreeSubscriber.refresh(ResourceVariantTreeSubscriber.java:126)
	at org.eclipse.team.internal.ui.synchronize.RefreshSubscriberParticipantJob.doRefresh(RefreshSubscriberParticipantJob.java:116)
	at org.eclipse.team.internal.ui.synchronize.RefreshParticipantJob.run(RefreshParticipantJob.java:309)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)

I couldn't really find out when the synchronize action is activated in the repositories view context menu. Sometimes it's there sometimes its greyed out.

Some more thoughts about tests :

Could you cover all possible permutations in 
GitSyncInfo.calculateKind() with tests ?

I think the GitResourceVariantComparator would also deserve a test.

In general I think you should think about a way to move most of the logic down into org.eclipse.egit.core and then write core tests for the basic logic. They are faster, and don't depend on brittle label text search logic.