Reputation: 33
I am trying To Merge changes From SVN Folder to My Local folder which has previous revision code and new changes. Below Method takes SrcUrl and Local Path of Folder which has new changes and srcrev holds Revision Number that needs to be merged from svn to my local folder.
SVN.Merge() returns True but am not able to see any code changes in my local folder after merge.
Can anyone please tell me where am doing mistake.
public void Merge(String SrcUrl,String localpath,long SrcRev)
{
using (SvnClient client = new SvnClient())
{
try
{
SvnMergeArgs mergeArgs = new SvnMergeArgs();
mergeArgs.Depth = SvnDepth.Infinity;
//Attaching the events
mergeArgs.Notify += new EventHandler<SvnNotifyEventArgs>(Merge_Notify);
mergeArgs.SvnError += new EventHandler<SvnErrorEventArgs>(Merge_Error);
mergeArgs.Conflict += new EventHandler<SvnConflictEventArgs>(Merge_Confilct);
mergeArgs.Force = false;
SvnRevisionRange svnRange = new SvnRevisionRange(SrcRev, SrcRev);
SvnUriTarget MyTarget = new SvnUriTarget(new Uri(SrcUrl));
if( client.Merge(localpath, MyTarget, svnRange, mergeArgs))
MessageBox.Show("Merged successfully");
}
catch (SvnException se)
{
MessageBox.Show(se.Message,"svn merge error",MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
}
Upvotes: 0
Views: 455
Reputation: 19612
Was the change already merged before?
Subversion tracks whatever is already merged in the 'svn:mergeinfo' property, and if the change is already merged you just get success, just like with any other Subversion client.
Note that you always want to merge a revision range.. you merge the changes between two different revisions. The svn
client implements its -c
argument by passing the range of the passed revision minus 1, to the revision as that happens to be what is changed in that specific revision.
Upvotes: 1