Hi all,
A not-so-very-nice, but quite effective way of doing it:
$ cd $WORKINGDIR
$ find . \( -type d -name "CVS" -prune \) -o \( -type d -exec cvs add {} \; \)
2>/dev/null
$ find . \( -type d -name "CVS" -prune \) -o \( -type f -exec cvs add {} \; \)
2>/dev/null
The first find will add all your directories; error output goes to /dev/null. The
second one takes care of all your files.
Files / directories that already exist in the repository will just produce a harmless
error.
The first part of the find statement avoids going down the CVS directories in your
workspace. (cvs does not like it when you try to 'add' those)
Disadvantage: this is rather time-consuming, because a seperate cvs operation is done
for every directory or file.
Advantage: This will (iirc) handle file names with spaces, if you really must have
those. It is also a big hammer to crack all sizes of nuts. ymmv.
If you are the only person using a repository (or one of a very few), you might want
to try parallelising the effort; something like:
#!/bin/sh
USER=MyName
WORKINGDIR=/home/${USER}/MyWorkingDir
TMPFILE=/home/${USER}/CVSTEMPFILE
# Find all dirs and add them
find . \( -type d -name "CVS" -prune \) -o \( -type d -print \) | while read DIR; do
cvs add ${DIR} 2>/dev/null &
done
# Wait until all are done
wait
find . \( -type d -name "CVS" -prune \) -o \( -type f -print \) | while read FILE; do
cvs add ${FILE} 2>/dev/null &
done
wait
# EOF
Try the difference between doing this and doing the same without the ampersands. It is
possible there are huge speed improvements It may also be possible you find yourself
locking yourself out until the cows come home. I have had very good results doing
this, but ony after I found a good balance between dropping everything in the
background and doing that more selectively.
> A recursive bulk cvs add is more work
Only for the machine. :) But indeed, the above approach runs once---done. Using CVS's
interpretation of what is and isn't known in your workspace can be more than a bit
cumbersome.
>Probably easier just to run the update script a bunch of times
With lots of subdirs of subdirs, the large-hammer approach could very well be faster.
TTYL,
Schmolle
ps: I'm writing this code of the top of my head. TEST IT BEFORE YOU USE IT! And read
the find man page. I'll see if I can verify my claims today and post additional
comments if need be.
_______________________________________________
Info-cvs mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/info-cvs