On Wed, Jul 24, 2013 at 07:32:20PM +0000, Braun, Eric wrote: > The enhancement would be to include only parents marked for addition. > Nothing special for prop changes as you don't want to commit these later if > the directory was already committed (unless explicitly stated). > > So, I think's a rather simple request. If commit --parents is loaded then > any parent directories for the given command line targets that are in an add > state should be included in the targets passed on. > > Eric
What would svn commit --parents do if the newly added parents are replacing a deleted item in the working copy? It seems svn would then have to commit a replacement instead of an addition. In which case this option cannot claim to be scoped to just additions, because a deletion needs to be committed as part of the replacement. The same questions applies to added items which are inside copies. Copies can only be committed recursively due to the way cheap copies are implemented in the repository. That would mean that not only parents of the explicit commit target would be committed, but also any other children of those parents. If the --parents option did nothing for copied and replaced items, it would probably have to error out if those occur. For example, the following would commit A and A/B: svn mkdir A svn mkdir A/B svn commit --parents A/B But the following would have to error out or commit the deletion of the original A, not just an addition: svn rm A svn mkdir A svn mkdir A/B svn commit --parents A/B And this would also error out or commit any children of C along with the child B, effectively committing C recursively, which defeats the idea of the --parents option: svn cp A C svn mkdir C/B svn commit --parents C/B So, due to the recursive nature of copies, the above would be equivalent to: svn cp A C svn mkdir C/B svn commit C I'm not sure how this behaviour can be defined in a consistent way. What about passing the right list of commit targets instead of adding a new --parents option? Note that the list can be passed via a file using the --targets option. Perhaps you could generate a file that includes the proper list of targets, and then run the commit?