All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bryan Larsen <bryan.larsen@gmail.com>
To: git@vger.kernel.org
Subject: [PATCH] 3/7 Add --info-only option to git-update-cache.
Date: Fri, 08 Jul 2005 06:54:24 -0400	[thread overview]
Message-ID: <42CE5B60.8050500@gmail.com> (raw)



Add --info-only option to git-update-cache.

Signed-off-by: Bryan Larsen <bryan.larsen@gmail.com>
---

  Documentation/git-update-cache.txt |   23 +++++++++++++++++++----
  update-cache.c                     |   14 +++++++++++---
  2 files changed, 30 insertions(+), 7 deletions(-)

diff --git a/Documentation/git-update-cache.txt 
b/Documentation/git-update-cache.txt
--- a/Documentation/git-update-cache.txt
+++ b/Documentation/git-update-cache.txt
@@ -14,6 +14,7 @@ SYNOPSIS
  	     [--ignore-missing]
  	     [--force-remove]
  	     [--cacheinfo <mode> <object> <file>]\*
+	     [--info-only]
  	     [--] [<file>]\*

  DESCRIPTION
@@ -47,6 +48,9 @@ OPTIONS
  --cacheinfo <mode> <object> <path>::
  	Directly insert the specified info into the cache.
  	
+--info-only::
+	All <file> arguments behave like --cacheinfo.
+	
  --force-remove::
  	Remove the file from the index even when the working directory
  	still has such a file. (Implies --remove.)
@@ -80,15 +84,26 @@ the stat entry is out of date.
  For example, you'd want to do this after doing a "git-read-tree", to link
  up the stat cache details with the proper files.

-Using --cacheinfo
------------------
-'--cacheinfo' is used to register a file that is not in the current
-working directory.  This is useful for minimum-checkout merging.
+Using --cacheinfo or --info-only
+--------------------------------
+'--cacheinfo' is used to register a file that is not in the current 
working
+directory.  This is useful for minimum-checkout merging.

  To pretend you have a file with mode and sha1 at path, say:

   $ git-update-cache --cacheinfo mode sha1 path
+
+'--info-only' is used to register a file without placing it in the object
+database.  This is useful for status-only repositories.
+
+Both '--cacheinfo' and '--info-only' behave similarly: the index is updated
+but the object database isn't.  '--cacheinfo' is useful when the object is
+in the database but the file isn't available locally.  '--info-only' is
+useful when the file is available, but you do not wish to update the 
object
+database.

+Examples
+--------
  To update and refresh only the files already checked out:

     git-checkout-cache -n -f -a && git-update-cache --ignore-missing 
--refresh
diff --git a/update-cache.c b/update-cache.c
--- a/update-cache.c
+++ b/update-cache.c
@@ -12,7 +12,7 @@
   * like "git-update-cache *" and suddenly having all the object
   * files be revision controlled.
   */
-static int allow_add = 0, allow_remove = 0, allow_replace = 0, not_new 
= 0, quiet = 0;
+static int allow_add = 0, allow_remove = 0, allow_replace = 0, not_new 
= 0, quiet = 0, info_only = 0;
  static int force_remove;

  /* Three functions to allow overloaded pointer return; see linux/err.h */
@@ -68,7 +68,7 @@ static int add_file_to_cache(char *path)
  		fd = open(path, O_RDONLY);
  		if (fd < 0)
  			return -1;
-		if (index_fd(ce->sha1, fd, &st, 0) < 0)
+		if (index_fd(ce->sha1, fd, &st, info_only) < 0)
  			return -1;
  		break;
  	case S_IFLNK:
@@ -77,7 +77,11 @@ static int add_file_to_cache(char *path)
  			free(target);
  			return -1;
  		}
-		if (write_sha1_file(target, st.st_size, "blob", ce->sha1))
+		if (info_only) {
+			unsigned char hdr[50];
+			int hdrlen;
+			write_sha1_file_prepare(target, st.st_size, "blob", ce->sha1, hdr, 
&hdrlen);
+		} else if (write_sha1_file(target, st.st_size, "blob", ce->sha1))
  			return -1;
  		free(target);
  		break;
@@ -382,6 +386,10 @@ int main(int argc, char **argv)
  				i += 3;
  				continue;
  			}
+			if (!strcmp(path, "--info-only")) {
+				info_only = 1;
+				continue;
+			}
  			if (!strcmp(path, "--force-remove")) {
  				force_remove = 1;
  				continue;


\f

                 reply	other threads:[~2005-07-08 11:04 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=42CE5B60.8050500@gmail.com \
    --to=bryan.larsen@gmail.com \
    --cc=git@vger.kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.