[PATCH][SVNMERGE] Make get_default_head() more generic(get_heads()).

Madan U S madan at collab.net
Thu Apr 13 11:02:56 PDT 2006


On Thu, 13 Apr 2006 21:55:42 +0530, Daniel Rall 
<dlr at collab.net> wrote:
 
> Though I'd like to be able to say otherwise, I can't 
> say that this
> patch makes sense to apply by itself.  
 
true...
 
 
> Because get_default_head() has a very specific purpose, 
> this change
> results in less cohesive code.  Let's apply this as 
> part of your
> larger change set.  Code review inlined below.
 
hmm, am thinking one logical step per commit... I dont 
mind making this part of a bigger patch though...
 
 
 
> > On Wed, 12 Apr 2006, Madan S. wrote:
 
 
> > This is a preparatory step for 'svnmerge log'.
 
 
> > [[[
> > Make the get_default_head() function more generic.
 
> The summary should state how it's more generic, 
> preferably by stating
> what it does.
 
> > * contrib/client-side/svnmerge.py
> >   (get_default_head): Removed.
 
> This function was replaced by get_heads(), not simply 
> removed.  Log
> message could state as much.
 
> >   (get_heads): New function similar to 
> > get_default_head(), but can return
> >   all the available head values. Also takes an extra 
> > parameter
> >   `get_only_default'. If `get_only_default' is True, 
> > expect only one
> >   head (error out if not), and return it. If 
> > `get_only_default' is
> >   False, return all the available heads as a list.
> >   (main): Modify call of get_default_head() to 
> > get_heads().
> > ]]]
 
agree on comments about the log... will do. thanks.
 
 
 
> > Content-Description: smdiff.txt
> > Index: contrib/client-side/svnmerge.py
> > ===================================================================
> > --- contrib/client-side/svnmerge.py(revision 19320)
> > +++ contrib/client-side/svnmerge.py(working copy)
> > @@ -749,9 +749,10 @@
> >      messages.append('')
> >      return longest_sep.join(messages)
> >  
> > -def get_default_head(branch_dir, branch_props):
> > -    """Return the default head for branch_dir (given 
> > its branch_props). Error
> > -    out if there is ambiguity."""
> > +def get_heads(branch_dir, branch_props, 
> > get_only_default=False):
 
> As you allude to below, I'm a little uneasy about the 
> get_only_default
> parameter.  However, it's hard to be certain whether it 
> makes sense or
> not without seeing how this function is used in your 
> 'svnmerge.py
> status' implementation.
 
simple, 'svn status' needs a list of all heads to list 
status... so, it would call get_heads() with the 
get_only_default parameter as False.
 
 
> > +    """Return all the heads for branch_dir (given its 
> > branch_props). If
> > +    the get_only_default parameter is True, expect 
> > only one head (error
> > +    out if there is ambiguity) and return it."""
 
> We should take this function rename opportunity to 
> start calling these
> "sources" rather than "heads" (I've heard quite a few 
> other people
> mention this).  Along those lines, I'd like to see this 
> function named
> get_sources(), or better yet, get_merge_sources().
 
 
cool. would do that... over the long run, this also 
requires a major change in inline documentation...
 
 
>Also, it looks like this function can never return an 
> empty array --
> it always has 1 or more elements.  You should probably 
> document as
> much.
 
why? how would that be useful?
 
 
> >      if not branch_props:
> >          error("no integration info available")
 
> > @@ -764,11 +765,17 @@
> >      if props.has_key(directory):
> >          del props[directory]
 
> > -    if len(props) > 1:
> > +    if get_only_default and len(props) > 1:
> >          error('multiple heads found. '
> >                'Explicit head argument (-S/--head) 
> > required.')
 
> > -    return props.keys()[0]
 
> This section of the patch probably won't apply anymore, 
> since your
> "multiple heads found" patch (r19338).
 
oh, it does... only that the error message becomes more 
elaborate...
 
 
> > +    # Is this correct? Return a list/string depending 
> > on the
> > +    # value of get_only_default. I think the return 
> > value of
> > +    # any function should always be of the same type.
> > +    if get_only_default:
> > +        return props.keys()[0]
> > +    else:
> > +        return props.keys()
 
> Depending on this function's usage, it'd likely be 
> cleaner to always
> return a list, and leave it up to the caller to 
> interpret the result.
 
I side you on this... I think so too. thx for the 
reassurance. 
 
 
> >  def check_old_prop_version(branch_dir, props):
> >      """Check if props (of branch_dir) are svnmerge 
> > properties in old format,
> > @@ -1683,7 +1690,7 @@
> >              if not opts["revision"]:
> >                  opts["revision"] = "1-" + cf_rev
> >          else:
> > -            opts["head-path"] = 
> > get_default_head(branch_dir, branch_props)
> > +            opts["head-path"] = get_heads(branch_dir, 
> > branch_props, True)
 
> >                opts["head-path"] = 
> > get_merge_sources(branch_dir, branch_props)[0]
 
> ...but this would probably be different in your 
> 'svnmerge.py status' change set.
 
no, no... you are right... I should change the usage of 
the current call to get_heads().. er... 
get_merge_sources() 
 
thanks for the review,
Regards,
Madan.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: /pipermail/svnmerge/attachments/20060413/0f811fe9/attachment.htm 


More information about the Svnmerge mailing list