From: Theodore Ts'o <tytso@mit.edu>
To: Junio C Hamano <junkio@cox.net>
Cc: Git Mailing List <git@vger.kernel.org>, Theodore Ts'o <tytso@mit.edu>
Subject: [PATCH] Add --no-reuse-delta option to git-gc
Date: Tue, 8 May 2007 09:28:27 -0400 [thread overview]
Message-ID: <11786309071033-git-send-email-tytso@mit.edu> (raw)
In-Reply-To: <11786309072612-git-send-email-tytso@mit.edu>
This allows the user to regenerate the deltas in packs while doing
a git-gc. The user could just run git-repack -a -d -f -l after
running git-gc, but then the first git-repack run by git-gc is
a bit of waste.
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
---
Documentation/git-gc.txt | 7 ++++++-
builtin-gc.c | 24 ++++++++++++++++++++++--
2 files changed, 28 insertions(+), 3 deletions(-)
diff --git a/Documentation/git-gc.txt b/Documentation/git-gc.txt
index bc16584..0493d06 100644
--- a/Documentation/git-gc.txt
+++ b/Documentation/git-gc.txt
@@ -8,7 +8,7 @@ git-gc - Cleanup unnecessary files and optimize the local repository
SYNOPSIS
--------
-'git-gc' [--prune]
+'git-gc' [--prune] [--no-reuse-delta]
DESCRIPTION
-----------
@@ -35,6 +35,11 @@ OPTIONS
repository at the same time (e.g. never use this option
in a cron script).
+--no-reuse-delta::
+ This causes deltas in existing packs to be recalculated instead
+ of reusing the existing deltas. This can save disk space at
+ the cost of taking more time to recalculate them from scratch.
+
Configuration
-------------
diff --git a/builtin-gc.c b/builtin-gc.c
index 3b1f8c2..5cb7ffd 100644
--- a/builtin-gc.c
+++ b/builtin-gc.c
@@ -15,13 +15,14 @@
#define FAILED_RUN "failed to run %s"
-static const char builtin_gc_usage[] = "git-gc [--prune]";
+static const char builtin_gc_usage[] = "git-gc [--prune] [--no-reuse-delta]";
static int pack_refs = -1;
+#define MAX_ADD 10
static const char *argv_pack_refs[] = {"pack-refs", "--prune", NULL};
static const char *argv_reflog[] = {"reflog", "expire", "--all", NULL};
-static const char *argv_repack[] = {"repack", "-a", "-d", "-l", NULL};
+static const char *argv_repack[MAX_ADD] = {"repack", "-a", "-d", "-l", NULL};
static const char *argv_prune[] = {"prune", NULL};
static const char *argv_rerere[] = {"rerere", "gc", NULL};
@@ -37,6 +38,21 @@ static int gc_config(const char *var, const char *value)
return git_default_config(var, value);
}
+static append_option(const char **cmd, const char *opt, int max_length)
+{
+ int i;
+
+ for (i=0; cmd[i]; i++)
+ ;
+
+ if (i+2 >= max_length) {
+ fprintf(stderr, "Too many options specified\n");
+ exit(1);
+ }
+ cmd[i++] = opt;
+ cmd[i] = 0;
+}
+
int cmd_gc(int argc, const char **argv, const char *prefix)
{
int i;
@@ -53,6 +69,10 @@ int cmd_gc(int argc, const char **argv, const char *prefix)
prune = 1;
continue;
}
+ if (!strcmp(arg, "--no-reuse-delta")) {
+ append_option(argv_repack, "-f", MAX_ADD);
+ continue;
+ }
/* perhaps other parameters later... */
break;
}
--
1.5.2.rc2.22.ga39d
next prev parent reply other threads:[~2007-05-08 13:28 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-05-08 2:54 [PATCH] Add --no-reuse-delta, --window, and --depth options to git-gc Theodore Ts'o
2007-05-08 3:13 ` Nicolas Pitre
2007-05-08 3:21 ` Theodore Tso
2007-05-08 3:38 ` Dana How
2007-05-08 4:43 ` Junio C Hamano
2007-05-08 13:46 ` Nicolas Pitre
2007-05-08 13:28 ` [PATCH] Add --no-reuse-delta, --window, and --depth options to Theodore Ts'o
2007-05-08 13:28 ` [PATCH] Add pack.depth option to git-pack-objects and change default depth to 50 Theodore Ts'o
2007-05-08 13:28 ` Theodore Ts'o [this message]
2007-05-08 15:35 ` [PATCH] Add --no-reuse-delta option to git-gc Nicolas Pitre
2007-05-09 5:05 ` Daniel Barkalow
2007-05-09 8:15 ` Junio C Hamano
2007-05-09 9:02 ` Steven Grimm
2007-05-09 11:35 ` Other compression?, was " Johannes Schindelin
2007-05-09 15:15 ` Junio C Hamano
2007-05-09 19:10 ` Shawn O. Pearce
2007-06-10 7:40 ` Sam Vilain
2007-06-11 1:51 ` Nicolas Pitre
2007-06-11 6:20 ` Steven Grimm
2007-06-11 6:31 ` Shawn O. Pearce
2007-06-11 10:20 ` Johannes Schindelin
2007-06-11 14:01 ` Nicolas Pitre
2007-06-11 21:40 ` Johannes Schindelin
2007-05-09 19:48 ` [PATCH] Add --aggressive option to 'git gc' Theodore Tso
2007-05-09 20:19 ` Junio C Hamano
2007-05-09 22:22 ` Theodore Tso
2007-05-10 7:38 ` Junio C Hamano
2007-05-08 15:38 ` [PATCH] Add pack.depth option to git-pack-objects and change default depth to 50 Nicolas Pitre
2007-05-08 16:30 ` Theodore Tso
2007-05-08 16:49 ` Johannes Schindelin
2007-05-08 18:09 ` Theodore Tso
2007-05-08 18:46 ` Nicolas Pitre
2007-05-09 13:49 ` Theodore Tso
2007-05-09 14:17 ` Johannes Schindelin
2007-05-08 17:07 ` Dana How
2007-05-08 17:35 ` Nicolas Pitre
2007-05-09 5:03 ` Junio C Hamano
2007-05-08 15:30 ` [PATCH] Add --no-reuse-delta, --window, and --depth options to Nicolas Pitre
2007-05-08 21:12 ` Junio C Hamano
2007-05-08 23:59 ` Nicolas Pitre
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=11786309071033-git-send-email-tytso@mit.edu \
--to=tytso@mit.edu \
--cc=git@vger.kernel.org \
--cc=junkio@cox.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).