~ruther/guix-local

38d27786086ff2b8d1325b1c0090ccff3745adfc — Ludovic Courtès 11 years ago e3fd0ce
guix gc: Add '--optimize'.

* guix/scripts/gc.scm (show-help, %options): Add --optimize.
  (guix-gc): Handle it.
2 files changed, 20 insertions(+), 1 deletions(-)

M doc/guix.texi
M guix/scripts/gc.scm
M doc/guix.texi => doc/guix.texi +11 -0
@@ 1472,6 1472,17 @@ Attempt to delete all the store files and directories specified as
arguments.  This fails if some of the files are not in the store, or if
they are still live.

@item --optimize
@cindex deduplication
Optimize the store by hard-linking identical files---this is
@dfn{deduplication}.

The daemon performs deduplication after each successful build or archive
import, unless it was started with @code{--disable-deduplication}
(@pxref{Invoking guix-daemon, @code{--disable-deduplication}}).  Thus,
this option is primarily useful when the daemon was running with
@code{--disable-deduplication}.

@item --list-dead
Show the list of dead files and directories still present in the
store---i.e., files and directories no longer reachable from any root.

M guix/scripts/gc.scm => guix/scripts/gc.scm +9 -1
@@ 1,5 1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2012, 2013, 2015 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 44,6 44,8 @@ Invoke the garbage collector.\n"))
  (display (_ "
  -d, --delete           attempt to delete PATHS"))
  (display (_ "
      --optimize         optimize the store by deduplicating identical files"))
  (display (_ "
      --list-dead        list dead paths"))
  (display (_ "
      --list-live        list live paths"))


@@ 88,6 90,10 @@ Invoke the garbage collector.\n"))
                (lambda (opt name arg result)
                  (alist-cons 'action 'delete
                              (alist-delete 'action result))))
        (option '("optimize") #f #f
                (lambda (opt name arg result)
                  (alist-cons 'action 'optimize
                              (alist-delete 'action result))))
        (option '("list-dead") #f #f
                (lambda (opt name arg result)
                  (alist-cons 'action 'list-dead


@@ 169,6 175,8 @@ Invoke the garbage collector.\n"))
         (list-relatives requisites))
        ((list-referrers)
         (list-relatives referrers))
        ((optimize)
         (optimize-store store))
        ((list-dead)
         (for-each (cut simple-format #t "~a~%" <>)
                   (dead-paths store)))