List Info

Thread: setting revision range when merging related branches




setting revision range when merging related branches
user name
2008-04-10 14:41:43

Hello –

 

I have a merging question when branches are releated.  In most cases when we merge 2 branches I set the revision range to be merged of the source branch from its first revision to the latest.  This does not make sense when merging to a branch which is the child of the source branch.  In this case you would want to start your revision range from the revision where the child branch was created.  There would not be any point in applying source revisions to a target from a point in time where the 2 branches were the same code line. ;

 

My thought on how to do this was to take the history of the target branch and trace back (stop on copy set to false) and trace back to see if the target has the same URL as the parent source at some point.  This would then be the starting point for the revision range of the merge.  The problem here is this is not that straight forward, the history for the target contains a Map of changed paths.  It is not that simple to get back to URLs to compare to the URL of the source branch.  In going down this path I am thinking there must be an easier way to do this. ;

 

So the question is what is the correct way to set the revision range for a merge where the target of the merge is a child branch of the source for the merge? 

 

Thanks in advance for the help. ;

 

Scott A Carter

Software Configuration Management Engineer

Conexant E-mail Firewall (Conexant.Com) made the following annotations
---------------------------------------------------------------------
********************** Legal Disclaimer ****************************

"This email may contain confidential and privileged material for the sole use of the intended recipient. Any unauthorized review, use or distribution by others is strictly prohibited. If you have received the message in error, please advise the sender by reply email and delete the message. Thank you."

**********************************************************************
---------------------------------------------------------------------

Re: setting revision range when merging related branches
user name
2008-04-14 02:20:24
Hello Scott,

In a next version of SVNKit the start point will be found
automatically 
for your case. But for older releases I see no other way as
finding the 
copy creation point manually. Given a repository root url
and changed 
paths you can create a url for a changed path this way:

SVNURL reposRootURL = ...;
SVNURL mergeSourceURL = ...;
SVNURL mergeTargetURL = ...;
SVNURL changedPathURL = null;
long startRev = 1;
...
   String changedPath = (String) changedPathsIter.next();
   SVNLogEntryPath logEntryPath = (SVNLogEntryPath) 
changedPaths.get(changedPath);
   changedPathURL = reposRootURL.appendPath(changedPath,
false);
   if (changedPathURL.equals(mergeTargetURL) &&
logEntryPath.getType() 
== SVNLogEntryPath.TYPE_ADDED &&
logEntryPath.getCopyPath() != null) {
       SVNURL copyFromURL = 
reposRootURL.appendPath(logEntryPath.getCopyPath(), false);
       if (copyFromURL.equals(mergeSourceURL)) {
           startRev = logEntryPath.getCopyRevision();
           break;
       }
   }


If I have understood your task correctly I think you need
that 
copy-from-revision, that is that very revision from which
the child 
branch was created, but not the revision in which it was
created, 
because they may be different.

----
Alexander Sinyushkin,
TMate Software,
http://svnkit.com/ - Java
[Sub]Versioning Library!

Scott Carter wrote:
> Hello –
> 
>  
> 
> I have a merging question when branches are releated. 
In most cases 
> when we merge 2 branches I set the revision range to be
merged of the 
> source branch from its first revision to the latest. 
This does not make 
> sense when merging to a branch which is the child of
the source branch.  
> In this case you would want to start your revision
range from the 
> revision where the child branch was created.  There
would not be any 
> point in applying source revisions to a target from a
point in time 
> where the 2 branches were the same code line. 
> 
>  
> 
> My thought on how to do this was to take the history of
the target 
> branch and trace back (stop on copy set to false) and
trace back to see 
> if the target has the same URL as the parent source at
some point.  This 
> would then be the starting point for the revision range
of the merge.  
> The problem here is this is not that straight forward,
the history for 
> the target contains a Map of changed paths.  It is not
that simple to 
> get back to URLs to compare to the URL of the source
branch.  In going 
> down this path I am thinking there must be an easier
way to do this. 
> 
>  
> 
> So the question is what is the correct way to set the
revision range for 
> a merge where the target of the merge is a child branch
of the source 
> for the merge? 
> 
>  
> 
> Thanks in advance for the help. 
> 
>  
> 
> Scott A Carter
> 
> Software Configuration Management Engineer
> 
> Conexant E-mail Firewall (Conexant.Com) made the
following annotations
>
------------------------------------------------------------
---------
> ********************** Legal Disclaimer
****************************
> 
> "This email may contain confidential and
privileged material for the 
> sole use of the intended recipient. Any unauthorized
review, use or 
> distribution by others is strictly prohibited. If you
have received the 
> message in error, please advise the sender by reply
email and delete the 
> message. Thank you."
> 
>
************************************************************
**********
>
------------------------------------------------------------
---------
> 

------------------------------------------------------------
---------
To unsubscribe, e-mail: svnkit-users-unsubscribesvnkit.com
For additional commands, e-mail: svnkit-users-helpsvnkit.com


[1-2]

about | contact  Other archives ( Real Estate discussion Medical topics )