Would having an explicit

    Skipped duplicated target 'foo'

notification address your concern?

Julian Foad wrote on Thu, Mar 29, 2012 at 15:47:34 +0100:
> Hi Daniel.
> 
> In the issue, you give the example "$svn add f* *o", and then claim svn 
> should eliminate duplicate args for you.  But why should it?
> 
> That could be seen as trying to be "too clever" and help users to do what 
> they didn't mean to do.  For example, I can recall severall times over the 
> years when I've tried to issue a command such as
> 
>   <cmd> <argument1> <argument2>
> 
> but due to finger error when copy-and-pasting the arguments, accidentally 
> issued
> 
>   <cmd> <argument1> <argument1>
> 
> It doesn't seem obvious to me that quietly eliding duplicate arguments is a 
> good thing.
> 
> The only precedent I can think of is that "svn commit" has always (or for a 
> very long time) eliminated duplicates -- not only duplicate cmd-line args, 
> but duplicate targets found by recursion.
> 
> In simple cases such as your example, with only one file involved and a very 
> short name, it's clearly a minor convenience to have it un-duplicated for 
> you.  But if I'm pasting unversioned file-paths into an "add" command from 
> the output of "svn status | grep -F '^?'", and there are a dozen of them and 
> their paths are more than 80 columns wide, then I'm unlikely to notice if I 
> accidentally paste two copies of the same path instead of two different paths.
> 
> 
> In short, -0.5.
> 
> - Julian
> 
> 
> 
> ----- Original Message -----
> > From: Daniel Shahaf <d...@daniel.shahaf.name>
> > To: Philip Martin <phi...@codematters.co.uk>
> > Cc: dev@subversion.apache.org
> > Sent: Thursday, 29 March 2012, 12:30
> > Subject: Re: [Issue 4154] New - svn add foo foo complains
> > 
> > Philip Martin wrote on Thu, Mar 29, 2012 at 10:32:42 +0100:
> >>  danie...@tigris.org writes:
> >> 
> >>  > http://subversion.tigris.org/issues/show_bug.cgi?id=4154
> >> 
> >>  > % ls
> >>  > A  foo  iota
> >>  > % $svn add f* *o 
> >>  > A         foo
> >>  > svn: warning: W150002: '/tmp/svn/wc1/trunk/foo' is already 
> > under version control
> >>  > subversion/svn/add-cmd.c:108: (apr_err=200009)
> >>  > subversion/svn/add-cmd.c:103: (apr_err=200009)
> >>  > svn: E200009: Could not add all targets because some targets are 
> > already versioned
> >>  > subversion/svn/add-cmd.c:94: (apr_err=200009)
> >>  > svn: E200009: Illegal target for the requested operation
> >>  > zsh: exit 1     $SVN add f* *o
> >>  > % 
> >>  >
> >>  > svn should be smart enough to uniq() the targets, rather than error 
> > out on me
> >>  > because I tried to add it twice.
> >> 
> >>  This issue is "svn add foo foo" complaining that foo is already
> >>  versioned.  Is add the only command that is wrong?
> > 
> > As you point out, 'add' and 'mkdir' are similar.  
> > 'revert' even today
> > doesn't error out in the idempotency scenario ('svn $subc foo && 
> > svn
> > $subc foo'; the second invocation errors out for $subc =~ /add|mkdir/.)
> > 
> >>  Should we eliminate duplicates in all commands?
> > 
> > I think we shouldn't eliminate duplicates in, for example, 'cat'.
> > 
> >>  Silently?
> >> 
> >>  $ svn add foo foo             # foo unversioned
> >>  "already versioned" error
> >> 
> >>  $ svn mkdir X X               # no X
> >>  "file exists" error
> >> 
> >>  $ svn rm foo foo              # foo versioned
> >>  no error
> >> 
> >>  $ svn rm --force foo foo      # foo added
> >>  "does not exist" error
> >> 
> >>  $ svn rm foo foo              # foo versioned and deleted
> >>  no error
> >> 
> >>  $ svn revert foo foo          # foo versioned
> >>  no error
> >> 
> >>  $ svn revert foo foo          # foo added
> >>  "Skipped foo" notification
> >> 
> >>  -- 
> >>  Philip
> >

Reply via email to