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.
Fetch merge changesets : find them and add the corresponding commit as parent commit

For the moment, just a trace if the commit for the parent changeset was missing because not yet fetched :(
rcheckin merge commit as a merge changeset

- find the tfs repository path of the parent commit
- create changeset of type merge with the previously found tfs repository path
- Resolve conflicts found by TFS by "AlwaysAcceptMine" because merge have already been done with git
refactoring InitBranch to prepare init branches with interdependencies
Add an option to stop the fetch when a merge commit couldn't be created

This option will permit to fetch the other branches to solve the dependency