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

Re: [PATCH]: Allow 'svn log' on an uncommitted copy destination

From: Paul Burba <ptburba_at_gmail.com>
Date: Thu, 21 Jan 2010 10:59:38 -0500

On Wed, Jan 20, 2010 at 1:06 PM, Paul Burba <ptburba_at_gmail.com> wrote:
> Any reason why we shouldn't be able to run 'svn log' on an uncommitted copy?
>
> For example (this is with trunk_at_901239):
>
> ### A WC with no local changes:
>
>  >svn st
>
> ### Check the log of a file:
>
>  >svn log A\D\H\psi
>  ------------------------------------------------------------------------
>  r4 | jrandom | 2010-01-20 09:23:21 -0500 (Wed, 20 Jan 2010) | 1 line
>  log msg
>  ------------------------------------------------------------------------
>  r1 | jrandom | 2010-01-20 09:23:12 -0500 (Wed, 20 Jan 2010) | 1 line
>  Log message for revision 1.
>  ------------------------------------------------------------------------
>
> ### Move that same file:
>
>  >svn move A\D\H\psi A\D\H\psi_moved
>  A         A\D\H\psi_moved
>  D         A\D\H\psi
>
>  >svn st
>  A  +    A\D\H\psi_moved
>  D       A\D\H\psi
>
> ### Run 'svn log' on the move destination.  Shouldn't this
> ### give us the log of 'psi'?
>
>  >svn log A\D\H\psi_moved
>  ..\..\..\subversion\svn\log-cmd.c:600: (apr_err=160013)
>  ..\..\..\subversion\libsvn_client\log.c:627: (apr_err=160013)
>  ..\..\..\subversion\libsvn_repos\log.c:1449: (apr_err=160013)
>  ..\..\..\subversion\libsvn_repos\log.c:1092: (apr_err=160013)
>  ..\..\..\subversion\libsvn_fs_fs\tree.c:2818: (apr_err=160013)
>  svn: File not found: revision 13, path '/A/D/H/psi_moved'
>
>
> The reason the above doesn't work appears due to a broken API promise
> in svn_client_log5; specifically the part which states:
>
> "@a peg_revision indicates in which revision @a targets are valid.
> If @a peg_revision is #svn_opt_revision_unspecified, it defaults to
> #svn_opt_revision_head for URLs or #svn_opt_revision_working for WC paths"
>                                     ^^^^^^^^^^^^^^^^^^^^^^
>
> Thing is, we don't currently default to a peg rev of
> svn_opt_revision_working in this case.  The attached patch makes this
> default take place.  It passes all tests and in the above example DTRT
> IMO:
>
> ### TRUNK_at_901239 PATCHED:
>
>  >svn log A\D\H\psi_moved
>  ------------------------------------------------------------------------
>  r4 | jrandom | 2010-01-20 09:23:21 -0500 (Wed, 20 Jan 2010) | 1 line
>  log msg
>  ------------------------------------------------------------------------
>  r1 | jrandom | 2010-01-20 09:23:12 -0500 (Wed, 20 Jan 2010) | 1 line
>  Log message for revision 1.
>  ------------------------------------------------------------------------
>
> Unless anyone has an objection to this, I'll add a test to the
> attached patch and commit...it just seems so obvious that this should
> work that I'm suspicious there isn't a good reason it does not :-P
>
> Paul
>
> [[[
> Allow 'svn log' on an uncommitted copy/move destination.
>
> * subversion/libsvn_client/log.c
>
>  (svn_client_log5): Keep API promise that a peg revision
>   svn_opt_revision_unspecified defaults to svn_opt_revision_working for
>   WC paths.
> ]]]

Added a test and committed r901752.

Paul
Received on 2010-01-21 17:00:11 CET

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

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.