Re: svn commit: r9709 - trunk/subversion/libsvn_client
"C. Michael Pilato" <[email protected]> 14 May 2004 08:13:39 -0500
| Newsgroups | gmane.mail.eyebrowse.devel,gmane.comp.version-control.subversion.svn |
|---|---|
| Message-ID | <m3oeortam4.fsf__14244.3716446452$1084542716@localhost.localdomain> |
[email protected] writes: > Modified: trunk/subversion/libsvn_client/ra.c > ============================================================================== > --- trunk/subversion/libsvn_client/ra.c (original) > +++ trunk/subversion/libsvn_client/ra.c Fri May 14 05:41:37 2004 > @@ -359,14 +359,22 @@ > we'll either use the path, or, if was copied, use its > copyfrom_path. */ > change = apr_hash_get (changed_paths, path, APR_HASH_KEY_STRING); > - if (change) > + > + /* If PATH was not newly added in this revision, then it may or may > + not have also been part of a moved subtree. In this case, set a > + default previous path, but still look through the parents of this > + path for a possible copy event. */ > + if (change && change->action != 'A' && change->action != 'R') > + prev_path = path; > + > + if (change && (change->action == 'A' || change->action == 'R')) > { > + /* PATH is new in this revision. This means it cannot have been > + part of a copied subtree. */ > if (change->copyfrom_path) > prev_path = apr_pstrdup (pool, change->copyfrom_path); > - else if (change->action == 'A') > - prev_path = NULL; > else > - prev_path = path; > + prev_path = NULL; > > *prev_path_p = prev_path; > if (action_p) Josh, could you a) fix the comment which is above the `change = apr_hash_get' line to reflect the new truth, and maybe simplify the logic above with an extra level of indentation? Something like: /* See if PATH was explicitly changed in this revision. */ change = apr_hash_get (changed_paths, path, APR_HASH_KEY_STRING); if (change) { /* If PATH was not newly added in this revision, then it may or may not have also been part of a moved subtree. In this case, set a default previous path, but still look through the parents of this path for a possible copy event. */ if (change->action != 'A' && change->action != 'R') { prev_path = path; } else { /* PATH is new in this revision. This means it cannot have been part of a copied subtree. */ if (change->copyfrom_path) prev_path = apr_pstrdup (pool, change->copyfrom_path); *prev_path_p = prev_path; if (action_p) *action_p = change->action; if (copyfrom_rev_p) *copyfrom_rev_p = change->copyfrom_rev; return SVN_NO_ERROR; } } [...]