X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/3d90ec146fab1637a864e9473288a796a7b70c72..25ff30e804d19ea571885db98c5843c11b2d1ad3:/TODO diff --git a/TODO b/TODO index 7acbd3c2..f299f160 100644 --- a/TODO +++ b/TODO @@ -73,6 +73,31 @@ There seems to be a bug with hardlinks -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 b3 +Progress indicator can produce corrupt output when transferring directories: + + main/binary-arm/ + main/binary-arm/admin/ + main/binary-arm/base/ + main/binary-arm/comm/8.56kB/s 0:00:52 + main/binary-arm/devel/ + main/binary-arm/doc/ + main/binary-arm/editors/ + main/binary-arm/electronics/s 0:00:53 + main/binary-arm/games/ + main/binary-arm/graphics/ + main/binary-arm/hamradio/ + main/binary-arm/interpreters/ + main/binary-arm/libs/6.61kB/s 0:00:54 + main/binary-arm/mail/ + main/binary-arm/math/ + main/binary-arm/misc/ + +lchmod + + I don't think we handle this properly on systems that don't have the + call. + + DAEMON -------------------------------------------------------------- server-imposed bandwidth limits @@ -114,6 +139,13 @@ use chroot command or a script. +supplementary groups + + Perhaps allow supplementary groups to be specified in rsyncd.conf; + then make the first one the primary gid and all the rest be + supplementary gids. + + File list structure in memory Rather than one big array, perhaps have a tree in memory mirroring @@ -337,24 +369,15 @@ zlib do this is to just disable gzip (with a warning) when talking to old versions. + After we get the @RSYNCD greeting from the server, we know it's + version but we have not yet sent the command line, so we could just + remove the -z option if the server is too old. -logging - - Perhaps flush stdout after each filename, so that people trying to - monitor progress in a log file can do so more easily. See - http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=48108 - - At the connections that just get a list of modules are not logged, - but they should be. - - If a child of the rsync daemon dies with a signal, we should notice - that when we reap it and log a message. - - Keep stderr and stdout properly separated (Debian #23626) - - Use a separate function for reporting errors; prefix it with - "rsync:" or "rsync(remote)", or perhaps even "rsync(local - generator): ". + For ssh invocation it's not so simple, because we actually use the + command line to start the remote process. However, we only actually + do compression in token.c, and we could therefore once we discover + the remote version emit an error if it's too old. I'm not sure if + that's a good tradeoff or not. proxy authentication @@ -445,6 +468,30 @@ Check "refuse options works" Was this broken when we changed to popt? +PERFORMANCE ---------------------------------------------------------- + +MD4 file_sum + + If we're doing a local transfer, or using -W, then perhaps don't + send the file checksum. If we're doing a local transfer, then + calculating MD4 checksums uses 90% of CPU and is unlikely to be + useful. + + Indeed for transfers over zlib or ssh we can also rely on the + transport to have quite strong protection against corruption. + + Perhaps we should have an option to disable this, analogous to + --whole-file, although it would default to disabled. The file + checksum takes up a definite space in the protocol -- we can either + set it to 0, or perhaps just leave it out. + +MD4 + + Perhaps borrow an assembler MD4 from someone? + + Make sure we call MD4 with properly-sized blocks whenever possible + to avoid copying into the residue region? + String area code Test whether this is actually faster than just using malloc(). If @@ -492,19 +539,50 @@ Memory debugger http://devel-home.kde.org/~sewardj/ +Release script + + Update spec files + + Build tar file; upload + + Send announcement to mailing list and c.o.l.a. + + Make freshmeat announcement + + Update web site + + + TESTING -------------------------------------------------------------- Cross-test versions Part of the regression suite should be making sure that we don't break backwards compatibility: old clients vs new servers and so - on. Ideally we would test the cross product of versions. + on. Ideally we would test both up and down from the current release + to all old versions. + + We might need to omit broken old versions, or versions in which + particular functionality is broken It might be sufficient to test downloads from well-known public rsync servers running different versions of rsync. This will give some testing and also be the most common case for having different versions and not being able to upgrade. + +Test on kernel source + + Download all versions of kernel; unpack, sync between them. Also + sync between uncompressed tarballs. Compare directories after + transfer. + + Use local mode; ssh; daemon; --whole-file and --no-whole-file. + + Use awk to pull out the 'speedup' number for each transfer. Make + sure it is >= x. + + Test large files Sparse and non-sparse @@ -535,6 +613,19 @@ Keep list of open issues and todos on the web site Update web site from CVS + +Perhaps redo manual as SGML + + The man page is getting rather large, and there is more information + that ought to be added. + + TexInfo source is probably a dying format. + + Linuxdoc looks like the most likely contender. I know DocBook is + favoured by some people, but it's so bloody verbose, even with emacs + support. + + BUILD FARM ----------------------------------------------------------- Add machines @@ -547,15 +638,24 @@ Add machines SCO -NICE ----------------------------------------------------------------- ---no-detach and --no-fork options +LOGGING -------------------------------------------------------------- - Very useful for debugging. Also good when running under a - daemon-monitoring process that tries to restart the service when the - parent exits. + Perhaps flush stdout after each filename, so that people trying to + monitor progress in a log file can do so more easily. See + http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=48108 -hang/timeout friendliness + At the connections that just get a list of modules are not logged, + but they should be. + + If a child of the rsync daemon dies with a signal, we should notice + that when we reap it and log a message. + + Keep stderr and stdout properly separated (Debian #23626) + + Use a separate function for reporting errors; prefix it with + "rsync:" or "rsync(remote)", or perhaps even "rsync(local + generator): ". verbose output @@ -564,6 +664,27 @@ verbose output At end of transfer, show how many files were or were not transferred correctly. +-vv + + Explain *why* every file is transferred or not (e.g. "local mtime + 123123 newer than 1283198") + + +debugging of daemon + + Add an rsyncd.conf parameter to turn on debugging on the server. + + + +NICE ----------------------------------------------------------------- + +--no-detach and --no-fork options + + Very useful for debugging. Also good when running under a + daemon-monitoring process that tries to restart the service when the + parent exits. + +hang/timeout friendliness internationalization @@ -584,3 +705,21 @@ rsyncsh fairly directly into rsync commands: it just needs to remember the current host, directory and so on. We can probably even do completion of remote filenames. + + +RELATED PROJECTS ----------------------------------------------------- + +http://rsync.samba.org/rsync-and-debian/ + +rsyncable gzip patch + + Exhaustive, tortuous testing + + Cleanups? + +rsyncsplit as alternative to real integration with gzip? + +reverse rsync over HTTP Range + + Goswin Brederlow suggested this on Debian; I think tridge and I + talked about it previous in relation to rproxy.