git.vger.kernel.org archive mirror
 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 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).