If there is no lchown(), don't try to set the user & group of a symlink.
[rsync/rsync.git] / TODO
diff --git a/TODO b/TODO
index 106c9a5..72b009f 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,7 +1,6 @@
 -*- indented-text -*-
 
 BUGS ---------------------------------------------------------------
-Fix hardlink reporting                                         2002/03/25
 Fix progress indicator to not corrupt log
 lchmod question        
 Do not rely on having a group called "nobody"
@@ -17,18 +16,17 @@ Handling IPv6 on old machines
 Other IPv6 stuff:
 Add ACL support                                                        2001/12/02
 Lazy directory creation
-Conditional -z for old protocols
 proxy authentication                                           2002/01/23
 SOCKS                                                          2002/01/23
 FAT support
 Allow forcing arbitrary permissions                            2002/03/12
 --diff                                         david.e.sewell  2002/03/15
-Add daemon --no-detach and --no-fork options
+Add daemon --no-fork option
+Create more granular verbosity                         jw      2003/05/15
 
 DOCUMENTATION --------------------------------------------------------
 Update README
 Keep list of open issues and todos on the web site
-Update web site from CVS
 Perhaps redo manual as SGML
 
 LOGGING --------------------------------------------------------------
@@ -58,10 +56,8 @@ Add machines to build farm
 PERFORMANCE ----------------------------------------------------------
 File list structure in memory
 Traverse just one directory at a time
-Hard-link handling
 Allow skipping MD4 file_sum                                    2002/04/08
 Accelerate MD4
-String area code
 
 TESTING --------------------------------------------------------------
 Torture test
@@ -74,7 +70,6 @@ If tests are skipped, say why.
 Test daemon feature to disallow particular options.
 Create pipe program for testing
 Create test makefile target for some tests
-Test "refuse options" works
 
 RELATED PROJECTS -----------------------------------------------------
 rsyncsh
@@ -87,80 +82,6 @@ reverse rsync over HTTP Range
 
 BUGS ---------------------------------------------------------------
 
-Fix hardlink reporting                                         2002/03/25
-  (was: There seems to be a bug with hardlinks)
-
-  mbp/2 build$ ls -l /tmp/a /tmp/b -i
-  /tmp/a:
-  total 32
-  2568307 -rw-rw-r--    3 mbp      mbp            29 Mar 25 17:30 a1
-  2568307 -rw-rw-r--    3 mbp      mbp            29 Mar 25 17:30 a2
-  2568307 -rw-rw-r--    3 mbp      mbp            29 Mar 25 17:30 a3
-  2568310 -rw-rw-r--    5 mbp      mbp            29 Mar 25 17:30 a4
-  2568310 -rw-rw-r--    5 mbp      mbp            29 Mar 25 17:30 a5
-  2568310 -rw-rw-r--    5 mbp      mbp            29 Mar 25 17:30 b1
-  2568310 -rw-rw-r--    5 mbp      mbp            29 Mar 25 17:30 b2
-  2568310 -rw-rw-r--    5 mbp      mbp            29 Mar 25 17:30 b3
-
-  /tmp/b:
-  total 32
-  2568309 -rw-rw-r--    3 mbp      mbp            29 Mar 25 17:30 a1
-  2568309 -rw-rw-r--    3 mbp      mbp            29 Mar 25 17:30 a2
-  2568309 -rw-rw-r--    3 mbp      mbp            29 Mar 25 17:30 a3
-  2568311 -rw-rw-r--    5 mbp      mbp            29 Mar 25 17:30 a4
-  2568311 -rw-rw-r--    5 mbp      mbp            29 Mar 25 17:30 a5
-  2568311 -rw-rw-r--    5 mbp      mbp            29 Mar 25 17:30 b1
-  2568311 -rw-rw-r--    5 mbp      mbp            29 Mar 25 17:30 b2
-  2568311 -rw-rw-r--    5 mbp      mbp            29 Mar 25 17:30 b3
-  mbp/2 build$ rm -r /tmp/b && ./rsync -avH /tmp/a/ /tmp/b
-  building file list ... done
-  created directory /tmp/b
-  ./
-  a1
-  a4
-  a2 => a1
-  a3 => a2
-  wrote 350 bytes  read 52 bytes  804.00 bytes/sec
-  total size is 232  speedup is 0.58
-  mbp/2 build$ rm -r /tmp/b
-  mbp/2 build$ ls -l /tmp/b
-  ls: /tmp/b: No such file or directory
-  mbp/2 build$ rm -r /tmp/b && ./rsync -avH /tmp/a/ /tmp/b
-  rm: cannot remove `/tmp/b': No such file or directory
-  mbp/2 build$ rm -f -r /tmp/b && ./rsync -avH /tmp/a/ /tmp/b
-  building file list ... done
-  created directory /tmp/b
-  ./
-  a1
-  a4
-  a2 => a1
-  a3 => a2
-  wrote 350 bytes  read 52 bytes  804.00 bytes/sec
-  total size is 232  speedup is 0.58
-  mbp/2 build$ ls -l /tmp/b
-  total 32
-  -rw-rw-r--    3 mbp      mbp            29 Mar 25 17:30 a1
-  -rw-rw-r--    3 mbp      mbp            29 Mar 25 17:30 a2
-  -rw-rw-r--    3 mbp      mbp            29 Mar 25 17:30 a3
-  -rw-rw-r--    5 mbp      mbp            29 Mar 25 17:30 a4
-  -rw-rw-r--    5 mbp      mbp            29 Mar 25 17:30 a5
-  -rw-rw-r--    5 mbp      mbp            29 Mar 25 17:30 b1
-  -rw-rw-r--    5 mbp      mbp            29 Mar 25 17:30 b2
-  -rw-rw-r--    5 mbp      mbp            29 Mar 25 17:30 b3
-  mbp/2 build$ ls -l /tmp/a
-  total 32
-  -rw-rw-r--    3 mbp      mbp            29 Mar 25 17:30 a1
-  -rw-rw-r--    3 mbp      mbp            29 Mar 25 17:30 a2
-  -rw-rw-r--    3 mbp      mbp            29 Mar 25 17:30 a3
-  -rw-rw-r--    5 mbp      mbp            29 Mar 25 17:30 a4
-  -rw-rw-r--    5 mbp      mbp            29 Mar 25 17:30 a5
-  -rw-rw-r--    5 mbp      mbp            29 Mar 25 17:30 b1
-  -rw-rw-r--    5 mbp      mbp            29 Mar 25 17:30 b2
-  -rw-rw-r--    5 mbp      mbp            29 Mar 25 17:30 b3
-
-                      --          --
-
-
 Fix progress indicator to not corrupt log
 
   Progress indicator can produce corrupt output when transferring directories:
@@ -331,21 +252,6 @@ Lazy directory creation
                       --          --
 
 
-Conditional -z for old protocols
-
-  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.
-
-  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                                           2002/01/23
 
   Allow RSYNC_PROXY to be http://user:pass@proxy.foo:3128/, and do
@@ -419,7 +325,7 @@ Allow forcing arbitrary permissions                         2002/03/12
                       --          --
 
 
-Add daemon --no-detach and --no-fork options
+Add daemon --no-fork option
 
   Very useful for debugging.  Also good when running under a
   daemon-monitoring process that tries to restart the service when the
@@ -427,19 +333,30 @@ Add daemon --no-detach and --no-fork options
 
                       --          --
 
-DOCUMENTATION --------------------------------------------------------
 
-Update README
+Create more granular verbosity                         jw      2003/05/15
+
+  Control output with the --report option.
+
+  The option takes as a single argument (no whitespace) a
+  comma delimited lists of keywords.
+
+  This would separate debugging from "logging" as well as
+  fine grained selection of statistical reporting and what
+  actions are logged.
+
+  http://lists.samba.org/archive/rsync/2003-May/006059.html
 
                       --          --
 
+DOCUMENTATION --------------------------------------------------------
 
-Keep list of open issues and todos on the web site
+Update README
 
                       --          --
 
 
-Update web site from CVS
+Keep list of open issues and todos on the web site
 
                       --          --
 
@@ -502,7 +419,9 @@ Improve error messages
   our load?  (Debian #28416) Probably fixed now, but a test case would
   be good.
 
-
+  When running as a daemon, some errors should both be returned to the
+  user and logged.  This will make interacting with a daemon less
+  cryptic.
 
                       --          --
 
@@ -766,76 +685,6 @@ Traverse just one directory at a time
                       --          --
 
 
-Hard-link handling
-
-  At the moment hardlink handling is very expensive, so it's off by
-  default.  It does not need to be so.
-
-  Since most of the solutions are rather intertwined with the file
-  list it is probably better to fix that first, although fixing
-  hardlinks is possibly simpler.
-
-  We can rule out hardlinked directories since they will probably
-  screw us up in all kinds of ways.  They simply should not be used.
-
-  At the moment rsync only cares about hardlinks to regular files.  I
-  guess you could also use them for sockets, devices and other beasts,
-  but I have not seen them.
-
-  When trying to reproduce hard links, we only need to worry about
-  files that have more than one name (nlinks>1 && !S_ISDIR).
-
-  The basic point of this is to discover alternate names that refer to
-  the same file.  All operations, including creating the file and
-  writing modifications to it need only to be done for the first name.
-  For all later names, we just create the link and then leave it
-  alone.
-
-  If hard links are to be preserved:
-
-    Before the generator/receiver fork, the list of files is received
-    from the sender (recv_file_list), and a table for detecting hard
-    links is built.
-
-    The generator looks for hard links within the file list and does
-    not send checksums for them, though it does send other metadata.
-
-    The sender sends the device number and inode with file entries, so
-    that files are uniquely identified.
-
-    The receiver goes through and creates hard links (do_hard_links)
-    after all data has been written, but before directory permissions
-    are set.
-
-  At the moment device and inum are sent as 4-byte integers, which
-  will probably cause problems on large filesystems.  On Linux the
-  kernel uses 64-bit ino_t's internally, and people will soon have
-  filesystems big enough to use them.  We ought to follow NFS4 in
-  using 64-bit device and inode identification, perhaps with a
-  protocol version bump.
-
-  Once we've seen all the names for a particular file, we no longer
-  need to think about it and we can deallocate the memory.
-
-  We can also have the case where there are links to a file that are
-  not in the tree being transferred.  There's nothing we can do about
-  that.  Because we rename the destination into place after writing,
-  any hardlinks to the old file are always going to be orphaned.  In
-  fact that is almost necessary because otherwise we'd get really
-  confused if we were generating checksums for one name of a file and
-  modifying another.
-
-  At the moment the code seems to make a whole second copy of the file
-  list, which seems unnecessary.
-
-  We should have a test case that exercises hard links.  Since it
-  might be hard to compare ./tls output where the inodes change we
-  might need a little program to check whether several names refer to
-  the same file.
-
-                      --          --
-
-
 Allow skipping MD4 file_sum                                    2002/04/08
 
   If we're doing a local transfer, or using -W, then perhaps don't
@@ -864,14 +713,6 @@ Accelerate MD4
 
                       --          --
 
-
-String area code
-
-  Test whether this is actually faster than just using malloc().  If
-  it's not (anymore), throw it out.
-
-                      --          --
-
 TESTING --------------------------------------------------------------
 
 Torture test
@@ -963,19 +804,6 @@ Create test makefile target for some tests
 
                       --          --
 
-
-Test "refuse options" works
-
-  What about for --recursive?
-
-  If you specify an unrecognized option here, you should get an error.
-
-  We need a test case for this...
-
-  Was this broken when we changed to popt?
-
-                      --          --
-
 RELATED PROJECTS -----------------------------------------------------
 
 rsyncsh