j0ton / svnx

Automatically exported from code.google.com/p/svnx
0 stars 0 forks source link

Problems with large nested add #107

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
svnX: 1.2
MacOS: 10.6.4
svn: 1.6.12

I'm having issues taking one one my library folders.  I'll click "add", 
highlight everything showing as a difference (subfolders, subsubfolders, files, 
etc.), and click "Commit".  This works for small folders, but for large ones 
I'm having issues.

Depending on how much I highlight, SvnX tells me to check /...dir.../svn to 
make sure the program is there, or prints this message:
2010-08-03 15:15:16.003 svnX[20039:203] *** NSTask: Task create for path 
'/opt/local/bin/svn' failed: 22, "Invalid argument".  Terminating temporary 
process.

I have attached a log of the command which produced that last message, as 
reported under Window->Activity->Log.  I notice it has "--non-recursive" at the 
end.  As an aside, this is marked as obsolete in svn 1.6.12 ('svn help add'). 
If I copy and paste this to the terminal, svn prints "Argument too long".  Note 
that my folders contain spaces, so I may actually be passing three times as 
many bogus arguments instead of running the same command.

Original issue reported on code.google.com by vanc...@gmail.com on 3 Aug 2010 at 7:54

Attachments:

GoogleCodeExporter commented 9 years ago
Mac OS X has a limit of 256KB for any command line.
Your attached command was well over 300KB long.

The '--non-recursive' flag has been superseded in Subversion 1.6 by a more 
flexible equivalent.
However, (a) it's still fully supported & (b) the new flag is not supported in 
Subversion 1.4.
It's necessary otherwise committing, say, a property change on just a folder 
also commits all changes within that folder.

If you are adding an entire folder hierarchy you could simply import it via the 
repository window.  (This is the usual method.)
Or you should be able to commit the whole thing via the command line with just 
the path of the hierarchy's root (& no --non-recursive).
Alternatively you could (temporarily) move your working copy folder to a 
shorter path e.g. /tmp/A which would shorten the command to ~200KB allowing it 
to work.

We could also both complain to Apple about Cocoa logging stuff to the Console 
but not informing the calling application ... but I doubt they care :-(.

Original comment by chris...@gmail.com on 3 Aug 2010 at 11:38

GoogleCodeExporter commented 9 years ago
Oh!  I didn't know import could do that, too.  Thanks.

Original comment by vanc...@gmail.com on 4 Aug 2010 at 8:05

GoogleCodeExporter commented 9 years ago
I don't know how much of a problem this is for most users.
I'm not convinced it is worth me spending the time to track down all the places 
where this could happen and examine all the ways to work around it.
E.g. Subversion has a --targets option.  It's under documented (see 
<http://code.google.com/p/svnbook/issues/detail?id=89>); only some commands 
support it; it would require careful testing.

I'll see if I can catch this and warn/alert the user before Cocoa logs it to 
the console.  This may be possible.

Original comment by chris...@gmail.com on 16 Sep 2010 at 1:45