X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/259c3e72b087eb7acd26819f565e51d914f45c19..136ac7ecec03339837e4b70f3128fd3609d37374:/TODO diff --git a/TODO b/TODO index c8fc18ab..97e3087d 100644 --- a/TODO +++ b/TODO @@ -73,7 +73,52 @@ There seems to be a bug with hardlinks -rw-rw-r-- 5 mbp mbp 29 Mar 25 17:30 b3 -IMPORTANT ------------------------------------------------------------ +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 + +rsyncd over ssh + + There are already some patches to do this. + + BitKeeper uses a server whose login shell is set to bkd. That's + probably a reasonable approach. + + +FEATURES ------------------------------------------------------------ + + +--dry-run is insufficiently dry + + Mark Santcroos points out that -n fails to list files which have + only metadata changes, though it probably should. + + There may be a Debian bug about this as well. use chroot @@ -86,12 +131,21 @@ use chroot http://lists.samba.org/pipermail/rsync/2001-August/thread.html http://lists.samba.org/pipermail/rsync/2001-September/thread.html + --files-from Avoids traversal. Better option than a pile of --include statements for people who want to generate the file list using a find(1) 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 @@ -315,29 +369,16 @@ 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 + 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. - 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): ". - - -rsyncd over ssh - - There are already some patches to do this. proxy authentication @@ -427,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 @@ -529,15 +594,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 @@ -546,6 +620,28 @@ 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 Change to using gettext(). Probably need to ship this for platforms @@ -553,7 +649,10 @@ internationalization Solicit translations. - Does anyone care? + Does anyone care? Before we bother modifying the code, we ought to + get the manual translated first, because that's possibly more useful + and at any rate demonstrates desire. + rsyncsh