summaryrefslogtreecommitdiff
path: root/NEWS
diff options
context:
space:
mode:
authorAdam Spiers <stow@adamspiers.org>2011-11-16 14:04:03 +0000
committerAdam Spiers <stow@adamspiers.org>2011-11-16 14:04:03 +0000
commit0473d3f8ba40ba2a445cbffb2d0b6fa84f774567 (patch)
treea50c7d63ede4d66795f7f5d047da7d41b5f56a67 /NEWS
parent0ffef1809a8a0b1c82ed4fd339ac32624c2a3c4e (diff)
downloadstow-0473d3f8ba40ba2a445cbffb2d0b6fa84f774567.tar.gz
Grafted root commit from savannah git master:v2.0.2
38dcdcb08c60f4cc661395beb22641c46add9e6c Initial Import
Diffstat (limited to 'NEWS')
-rw-r--r--NEWS137
1 files changed, 133 insertions, 4 deletions
diff --git a/NEWS b/NEWS
index 7791b77..1d663f8 100644
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,138 @@
News file for Stow.
+* Changes in version 2.0.1:
+** Defer operations until all potential conflicts have been assessed.
+
+We do this by traversing the installation image(s) and recording the
+actions that need to be performed. Redundant actions are factored out,
+e.g., we don't want to create a link that we will later remove in order to
+create a directory. Benefits of this approach
+
+ 1. Get to see _all_ the conflicts that are blocking an installation:
+ you don't have to deal with them one at a time.
+ 2. No operations are be performed if _any_ conflicts are detected:
+ a failed stow will not leave you with a partially installed
+ package.
+ 3. Minimises the set of operations that need to be performed.
+ 4. Operations are executed as a batch which is much faster
+ This can be an advantage when upgrading packages on a live system
+ where you want to minimise the amount of time when the package is
+ unavailable.
+
+** The above fixes the false conflict problem mentioned in the info file.
+
+** It also fixes the two bugs mentioned in the man page.
+
+** Multiple stow directories will now cooperate in folding/unfolding.
+
+** Conflict messages are more uniform and informative.
+
+** Verbosity and tracing is more extensive and uniform.
+
+** Implemented option parsing via Getopt::Long.
+
+** Default command line arguments set via '.stowrc' and '~/.stowrc' files.
+
+Contents of these files are parsed as though they occurred first on the
+command line.
+
+** Support multiple actions per invocation.
+
+In order for this to work, we had to add a new (optional) command line arg
+(-S) to specify packages to stow. For example, to update an installation
+of emacs you can now do
+
+ stow -D emacs-21.3 -S emacs-21.4a
+
+which will replace emacs-21.3 with emacs-21.4a.
+You can mix and match any number of actions, e.g.,
+
+ stow -S p1 p2 -D p3 p4 -S p5 -R p6
+
+will unstow p3, p4 and p6, then stow p1, p2, p5 and p6.
+
+* New (repeatable) command line arg: --ignore='<regex>'
+
+This suppresses operating on a file matching the regex (suffix), e.g.,
+
+ --ignore='~' --ignore='\.#.*'
+
+will ignore emacs and CVS backup files (suitable for ~/.stowrc file).
+
+(I opted for Perl regular expressions because they are more powerful and
+easier to implement).
+
+** New (repeatable) command line arg: --defer='<regex>'
+
+This defers stowing a file matching the regex (prefix) if that file is
+already stowed to a different package, e.g.,
+
+ --defer='man' --defer='info'
+
+will cause stow to skip over pre-existing man and info pages.
+
+Equivalently, you could use --defer='man|info' since the argument is just
+a Perl regex.
+
+** New (repeatable) command line arg: --override='<regex>'
+
+This forces a file matching the regex (prefix) to be stowed even if the
+file is already stowed to a different package, e.g.,
+
+ --override='man' --override='info'
+
+will unstow any pre-existing man and info pages that would conflict with
+the file we are trying to stow.
+
+Equivalently, you could use --override='man|info' since the argument is
+just a Perl regex.
+
+** The above gives the ability to manage packages with common content.
+
+For example, man pages that are shared by a number of CPAN packages.
+Using multiple stow directories and .stowrc files can also simplify
+things. In our setup we use the standard /usr/local/stow directory for
+packages to be installed in /usr/local. Since we install a large number
+of extra Perl packages (currently about 300) we use an additional stow
+directory: /usr/local/stow/perl-5.8.8-extras. Both stow directories
+contain a '.stow' file so that they collaborate appropriately. I then use
+the following .stowrc file in /usr/local/stow/perl-5.8.8-extras
+
+ --dir=/usr/local/stow/perl-5.8.8-extras
+ --target=/usr/local
+ --override=bin
+ --override=man
+ --ignore='perllocal\.pod'
+ --ignore='\.packlist'
+ --ignore='\.bs'
+
+When I stow packages from there, they automatically override any man pages
+and binaries that may already have been stowed by another package or by
+the core perl-5.8.8 installation. For example, if you want to upgrade the
+Test-Simple package, you need to override all the man pages that would
+have been installed by the core package. If you are upgrading CPAN, you
+will also have to override the pre-existing cpan executable.
+
+** By default, search less aggressively for invalid symlinks when unstowing.
+
+That is, we only search for bad symlinks in the directories explicitly
+mentioned in the installation image, and do not dig down into other
+subdirs. Digging down into other directories can be very time consuming
+if you have a really big tree (like with a couple of Oracle installations
+lying around). In general the old behaviour is only necessary when you
+have really stuffed up your installation by deleting a directory that has
+already been stowed. Doing that on a live system is somewhat crazy and
+hopefully rare. We provide an option '-p|--compat' to enable the old
+behaviour for those needing to patch up mistakes.
+
+** Implement a test suite and support code.
+
+This was built before implementing any of the extra features so I could
+more easily check for equivalent functionality. The initial code base had
+to be refactored substantially to allow for testing. The test suite is
+not exhaustive, but it should provide enough to check for regressions.
+
+
* Changes in version 1.3.3:
** Now requires Perl 5.005 or later
** Initially empty directories are not removed anymore
@@ -24,7 +157,3 @@ News file for Stow.
** `make clean' removes stow (which is generated from stow.in).
* Initial public release (v1.0) of Stow.
-
-Local variables:
-mode: outline
-End: