added subtree command for "subtree add" and "subtree pull"
TfsHelper can now map multiple paths in a workspace, remotes now map all paths for all subtrees

Signed-off-by: Gordon Burgett <gordon.burgett@gmail.com>
Fixing internals for when a remote has subtrees

Signed-off-by: Gordon Burgett <gordon.burgett@gmail.com>
subtree now updates the owning remote to the commit after the subtree merge
in-progress getting checkin to work, need to figure out why it wont map the workspace
checkin works for remote with subtrees

Signed-off-by: Gordon Burgett <gordon.burgett@gmail.com>
added "subtree split", which splits and also advances TFS refs as necessary

Signed-off-by: Gordon Burgett <gordon.burgett@gmail.com>
fixed issue with pull - GetPathInGitRepo was not taking prefix into account

Signed-off-by: Gordon Burgett <gordon.burgett@gmail.com>
Master remotes now delegate to subtrees when getting local item for server item.  This fixed an issue with unshelve.

Signed-off-by: Gordon Burgett <gordon.burgett@gmail.com>
Distinct operation on FetchChangesets was causing parts of changesets to be missed when a changeset spanned multiple remote projects.

Signed-off-by: Gordon Burgett <gordon.burgett@gmail.com>
making changes proposed in pull request

Signed-off-by: Gordon Burgett <gordon.burgett@gmail.com>
Owning remote now uses its own history for fetching new changesets rather than relying on the subtree branches.
The owning remote had been pulling changesets multiple times because FetchChangesets() was using the wrong MaxChangesetId

Signed-off-by: Gordon Burgett <gordon.burgett@gmail.com>
GetPathInGitRepo was not working correctly when going directly through a subtree remote.
The prefix only needs to be applied when working from the context of the owner remote.

Signed-off-by: Gordon Burgett <gordon.burgett@gmail.com>
Used the wrong remote for the prefix in GetPathInGitRepo

Signed-off-by: Gordon Burgett <gordon.burgett@gmail.com>
The local paths for server paths ought to be controlled by the workspace mapping, not the remote doing the command.  Before subtree, these were always the same, but now that is no longer the case.

Signed-off-by: Gordon Burgett <gordon.burgett@gmail.com>
Renames now get the correct workspace path when pulling the renamed file
from TFS.
Subtree remote's git-tfs ID is now applied when pulling new changesets, TfsWriter now handles determining whether to write with subtree or its owner.

This facilitates using git-tfs after having performed a subtree-split.  In the subtree's artificial revision history, the owner's git-tfs ID will not be present, so the TfsWriter will proceed as though the subtree remote were a normal remote.

Signed-off-by: Gordon Burgett <gordon.burgett@gmail.com>
Merge branch 'master' into subtree

Conflicts:
	GitTfs.VsCommon/TfsHelper.Common.cs
	GitTfs/Core/GitRepository.cs
	GitTfs/Core/GitTfsRemote.cs
	GitTfs/Core/IGitRepository.cs
	GitTfs/Core/TfsInterop/ITfsHelper.cs
Fixed other conflicts, all tests passing

Signed-off-by: Gordon Burgett <gordon.burgett@gmail.com>
Merge pull request #350 from gburgett/subtree

Subtree command for git-tfs