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 ---------------------------------------------------------------
 -*- 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"
 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
 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
 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
 
 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 --------------------------------------------------------------
 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
 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
 Allow skipping MD4 file_sum                                    2002/04/08
 Accelerate MD4
-String area code
 
 TESTING --------------------------------------------------------------
 Torture test
 
 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 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
 
 RELATED PROJECTS -----------------------------------------------------
 rsyncsh
@@ -87,80 +82,6 @@ reverse rsync over HTTP Range
 
 BUGS ---------------------------------------------------------------
 
 
 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:
 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
 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
 
   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.
 
   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
 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
 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
 RELATED PROJECTS -----------------------------------------------------
 
 rsyncsh