comments on $pure, $othercollection
This commit is contained in:
parent
61a1944b81
commit
5844b34608
1 changed files with 20 additions and 4 deletions
24
Stow.pm
24
Stow.pm
|
@ -143,9 +143,11 @@ sub Unstow {
|
||||||
# we have to move up out of that hierarchy and back into the stow
|
# we have to move up out of that hierarchy and back into the stow
|
||||||
# directory.
|
# directory.
|
||||||
|
|
||||||
# Does this directory only contain symlinks to the packages we are
|
# Does this directory only contain symlinks to a *single* package
|
||||||
# removing? We assume so and scan the directory until we find out
|
# collection *other* than one we are removing? We assume so and
|
||||||
# otherwise.
|
# scan the directory until we find out otherwise. We have to track
|
||||||
|
# this because if a subtree is found to be pure, we can fold it into
|
||||||
|
# a single symlink.
|
||||||
my $pure = 1;
|
my $pure = 1;
|
||||||
|
|
||||||
# FIXME what is this?
|
# FIXME what is this?
|
||||||
|
@ -193,16 +195,26 @@ sub Unstow {
|
||||||
# Yep, so get rid of it.
|
# Yep, so get rid of it.
|
||||||
&DoUnlink($contentPath);
|
&DoUnlink($contentPath);
|
||||||
} else {
|
} else {
|
||||||
# No, it points to another package collection.
|
# No, it points to another package collection. Is there
|
||||||
|
# still a chance this directory is pure and can be folded?
|
||||||
if ($pure) {
|
if ($pure) {
|
||||||
|
# Yes, so keep track of whether symlinks in the directory
|
||||||
|
# point to more than one collection.
|
||||||
if ($othercollection) {
|
if ($othercollection) {
|
||||||
|
# More than one collection means impure => no folding possible.
|
||||||
$pure = 0 if $collection ne $othercollection;
|
$pure = 0 if $collection ne $othercollection;
|
||||||
} else {
|
} else {
|
||||||
|
# This is the first reference to another collection
|
||||||
|
# we've seen, so remember it for future comparison with
|
||||||
|
# other symlink targets.
|
||||||
$othercollection = $collection;
|
$othercollection = $collection;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
# Link points outside the stow directory, therefore is not
|
||||||
|
# managed by stow and cannot be touched. So tree folding will
|
||||||
|
# not be possible.
|
||||||
$pure = 0;
|
$pure = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -226,10 +238,13 @@ sub Unstow {
|
||||||
$othercollection = $subother;
|
$othercollection = $subother;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
# Subtree is impure therefore this directory is impure.
|
||||||
$pure = 0;
|
$pure = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
# Current directory contains something other than a symlink or a
|
||||||
|
# directory, therefore folding is not going to be possible.
|
||||||
$pure = 0;
|
$pure = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -242,6 +257,7 @@ sub Unstow {
|
||||||
return ($pure, $othercollection);
|
return ($pure, $othercollection);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# This is the tree folding which the stow manual refers to.
|
||||||
sub CoalesceTrees {
|
sub CoalesceTrees {
|
||||||
my($parent, $stow, @trees) = @_;
|
my($parent, $stow, @trees) = @_;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue