[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: svn commit: r33944 - in branches/tc-merge-notify/subversion: include libsvn_client libsvn_wc

From: Stephen Butler <sbutler_at_elego.de>
Date: Wed, 29 Oct 2008 18:17:19 +0100

Quoting "Neels J. Hofmeyr" <neels_at_elego.de>:

> Hey tree-conflicts folks,
>
> please review and/or jump right in and fix stuff.
>
> Thanks!
> ~Neels
>
> neels_at_tigris.org wrote:
>> Author: neels
>> Date: Tue Oct 28 23:02:46 2008
>> New Revision: 33944
>>
>> Log:
>> On lightweight branch tc-merge-notify:
>>
>> Start off implementing per-victim notification of tree-conflicts
>> during merge.

Hi Neels,

The changes to merge.c and diff.c look good to me, on a quick
overview.

But I think there's some extra changes needed to support
skipping the victims. We need to separate tree conflict
notifications from all of the others.

I propose that we remove the (new) tree_conflicted field from
svn_wc_notify_t, and add one or more notify-actions instead.
At the same time, change the notify() function in the client to
accept the new tree conflict notifications.

Specifically, in notify(), we should add a couple of new cases,
and remove the 'C' in the fourth column from all other cases
that have it. E.g.:

   switch (n->action)
     {
     case svn_wc_notify_tree_conflict:
       nb->in_external ? nb->ext_tree_conflicts++
                       : nb->tree_conflicts++;
       if ((err = svn_cmdline_printf(pool, " C %s\n", path_local)))
         goto print_error;
       break;

     case svn_wc_notify_conflict_skip:
       nb->in_external ? nb->ext_skipped_paths++
                       : nb->skipped_paths++;
       if ((err = svn_cmdline_printf
            (pool, _("Skipped conflicted path '%s'\n"), path_local)))
         goto print_error;
       break;

The current code (for update, too) mixes tree conflict output
with other output.

This will affect repos_diff.c. Callbacks like the following
should do tree conflict notification earlier, before skipping
the rest of the callback (including the notify code below).

The notify code at the end of the repos_diff callbacks
shouldn't set the tree_conflicted field, because it won't
be in svn_wc_notify_t anymore.

>> + notify->tree_conflicted = b->tree_conflicted;

Comments?

Steve

==============================================================================
>> ---
>> branches/tc-merge-notify/subversion/libsvn_client/repos_diff.c Tue
>> Oct 28 22:17:24 2008 (r33943)
>> +++
>> branches/tc-merge-notify/subversion/libsvn_client/repos_diff.c Tue
>> Oct 28 23:02:46 2008 (r33944)

[...]

>> @@ -566,10 +585,11 @@ add_directory(const char *path,
>> }
>> else
>> new_action = kas->action;
>> - notify = svn_wc_create_notify(b->wcpath, new_action, pool);
>> + notify = svn_wc_create_notify(b->wcpath, new_action, pool);
>> notify->kind = kas->kind;
>> notify->content_state = notify->prop_state = kas->state;
>> notify->lock_state = svn_wc_notify_lock_state_inapplicable;
>> + notify->tree_conflicted = kas->tree_conflicted;
>> (*eb->notify_func)(eb->notify_baton, notify, pool);
>> apr_hash_set(eb->deleted_paths, b->wcpath,
>> APR_HASH_KEY_STRING, NULL);
>> @@ -579,6 +599,7 @@ add_directory(const char *path,
>> {
>> notify = svn_wc_create_notify(b->wcpath, action, pool);
>> notify->kind = svn_node_dir;
>> + notify->tree_conflicted = b->tree_conflicted;
>> (*eb->notify_func)(eb->notify_baton, notify, pool);
>> }
>> }

-- 
Stephen Butler | Software Developer
elego Software Solutions GmbH
Gustav-Meyer-Allee 25 | 13355 Berlin | Germany
fon: +49 30 2345 8696 | mobile: +49 163 25 45 015
fax: +49 30 2345 8695 | http://www.elegosoft.com
Geschäftsführer: Olaf Wagner | Sitz der Gesellschaft: Berlin
Amtsgericht Charlottenburg HRB 77719 | USt-IdNr: DE163214194
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe_at_subversion.tigris.org
For additional commands, e-mail: dev-help_at_subversion.tigris.org
Received on 2008-10-29 18:17:34 CET

This is an archived mail posted to the Subversion Dev mailing list.