Given a list of <pack>.idx files, this command validates the index file and the corresponding .pack file for consistency. This patch also uses the same validation mechanism in fsck-cache when the --full flag is used. During normal operation, sha1_file.c verifies that a given .idx file matches the .pack file by comparing the SHA1 checksum stored in .idx file and .pack file as a minimum sanity check. We may further want to check the pack signature and version when we map the pack, but that would be a separate patch. Earlier, errors to map a pack file was not flagged fatal but led to a random fatal error later. This version explicitly die()s when such an error is detected. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
		
			
				
	
	
		
			309 lines
		
	
	
		
			8.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			309 lines
		
	
	
		
			8.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
git(7)
 | 
						|
======
 | 
						|
May 2005
 | 
						|
 | 
						|
NAME
 | 
						|
----
 | 
						|
git - the stupid content tracker
 | 
						|
 | 
						|
 | 
						|
SYNOPSIS
 | 
						|
--------
 | 
						|
'git-<command>' <args>
 | 
						|
 | 
						|
DESCRIPTION
 | 
						|
-----------
 | 
						|
 | 
						|
This is reference information for the core git commands.
 | 
						|
 | 
						|
The Discussion section below contains much useful definition and
 | 
						|
clarification info - read that first.  And of the commands, I suggest
 | 
						|
reading link:git-update-cache.html[git-update-cache] and
 | 
						|
link:git-read-tree.html[git-read-tree] first - I wish I had!
 | 
						|
 | 
						|
David Greaves <david@dgreaves.com>
 | 
						|
08/05/05
 | 
						|
 | 
						|
Updated by Junio C Hamano <junkio@cox.net> on 2005-05-05 to
 | 
						|
reflect recent changes.
 | 
						|
 | 
						|
Commands Overview
 | 
						|
-----------------
 | 
						|
The git commands can helpfully be split into those that manipulate
 | 
						|
the repository, the cache and the working fileset and those that
 | 
						|
interrogate and compare them.
 | 
						|
 | 
						|
There are also some ancilliary programs that can be viewed as useful
 | 
						|
aids for using the core commands but which are unlikely to be used by
 | 
						|
SCMs layered over git.
 | 
						|
 | 
						|
Manipulation commands
 | 
						|
~~~~~~~~~~~~~~~~~~~~~
 | 
						|
link:git-checkout-cache.html[git-checkout-cache]::
 | 
						|
	Copy files from the cache to the working directory
 | 
						|
 | 
						|
link:git-commit-tree.html[git-commit-tree]::
 | 
						|
	Creates a new commit object
 | 
						|
 | 
						|
link:git-init-db.html[git-init-db]::
 | 
						|
	Creates an empty git object database
 | 
						|
 | 
						|
link:git-merge-base.html[git-merge-base]::
 | 
						|
	Finds as good a common ancestor as possible for a merge
 | 
						|
 | 
						|
link:git-mktag.html[git-mktag]::
 | 
						|
	Creates a tag object
 | 
						|
 | 
						|
link:git-read-tree.html[git-read-tree]::
 | 
						|
	Reads tree information into the directory cache
 | 
						|
 | 
						|
link:git-update-cache.html[git-update-cache]::
 | 
						|
	Modifies the index or directory cache
 | 
						|
 | 
						|
link:git-write-blob.html[git-write-blob]::
 | 
						|
	Creates a blob from a file
 | 
						|
 | 
						|
link:git-write-tree.html[git-write-tree]::
 | 
						|
	Creates a tree from the current cache
 | 
						|
 | 
						|
Interrogation commands
 | 
						|
~~~~~~~~~~~~~~~~~~~~~~
 | 
						|
link:git-cat-file.html[git-cat-file]::
 | 
						|
	Provide content or type information for repository objects
 | 
						|
 | 
						|
link:git-check-files.html[git-check-files]::
 | 
						|
	Verify a list of files are up-to-date
 | 
						|
 | 
						|
link:git-diff-cache.html[git-diff-cache]::
 | 
						|
	Compares content and mode of blobs between the cache and repository
 | 
						|
 | 
						|
link:git-diff-files.html[git-diff-files]::
 | 
						|
	Compares files in the working tree and the cache
 | 
						|
 | 
						|
link:git-diff-tree.html[git-diff-tree]::
 | 
						|
	Compares the content and mode of blobs found via two tree objects
 | 
						|
 | 
						|
link:git-export.html[git-export]::
 | 
						|
	Exports each commit and a diff against each of its parents
 | 
						|
 | 
						|
link:git-fsck-cache.html[git-fsck-cache]::
 | 
						|
	Verifies the connectivity and validity of the objects in the database
 | 
						|
 | 
						|
link:git-ls-files.html[git-ls-files]::
 | 
						|
	Information about files in the cache/working directory
 | 
						|
 | 
						|
link:git-ls-tree.html[git-ls-tree]::
 | 
						|
	Displays a tree object in human readable form
 | 
						|
 | 
						|
link:git-merge-cache.html[git-merge-cache]::
 | 
						|
	Runs a merge for files needing merging
 | 
						|
 | 
						|
link:git-rev-list.html[git-rev-list]::
 | 
						|
	Lists commit objects in reverse chronological order
 | 
						|
 | 
						|
link:git-rev-tree.html[git-rev-tree]::
 | 
						|
	Provides the revision tree for one or more commits
 | 
						|
 | 
						|
link:git-tar-tree.html[git-tar-tree]::
 | 
						|
	Creates a tar archive of the files in the named tree
 | 
						|
 | 
						|
link:git-unpack-file.html[git-unpack-file]::
 | 
						|
	Creates a temporary file with a blob's contents
 | 
						|
 | 
						|
link:git-verify-pack.html[git-verify-pack]::
 | 
						|
	Validates packed GIT archive files
 | 
						|
 | 
						|
The interrogate commands may create files - and you can force them to
 | 
						|
touch the working file set - but in general they don't
 | 
						|
 | 
						|
 | 
						|
Ancilliary Commands
 | 
						|
-------------------
 | 
						|
Manipulators:
 | 
						|
 | 
						|
link:git-apply-patch-script.html[git-apply-patch-script]::
 | 
						|
	Sample script to apply the diffs from git-diff-*
 | 
						|
 | 
						|
link:git-convert-cache.html[git-convert-cache]::
 | 
						|
	Converts old-style GIT repository
 | 
						|
 | 
						|
link:git-http-pull.html[git-http-pull]::
 | 
						|
	Downloads a remote GIT repository via HTTP
 | 
						|
 | 
						|
link:git-local-pull.html[git-local-pull]::
 | 
						|
	Duplicates another GIT repository on a local system
 | 
						|
 | 
						|
link:git-merge-one-file-script.html[git-merge-one-file-script]::
 | 
						|
	The standard helper program to use with "git-merge-cache"
 | 
						|
 | 
						|
link:git-pull-script.html[git-pull-script]::
 | 
						|
	Script used by Linus to pull and merge a remote repository
 | 
						|
 | 
						|
link:git-prune-script.html[git-prune-script]::
 | 
						|
	Prunes all unreachable objects from the object database
 | 
						|
 | 
						|
link:git-resolve-script.html[git-resolve-script]::
 | 
						|
	Script used to merge two trees
 | 
						|
 | 
						|
link:git-tag-script.html[git-tag-script]::
 | 
						|
	An example script to create a tag object signed with GPG
 | 
						|
 | 
						|
link:git-ssh-pull.html[git-ssh-pull]::
 | 
						|
	Pulls from a remote repository over ssh connection
 | 
						|
 | 
						|
Interogators:
 | 
						|
 | 
						|
link:git-diff-helper.html[git-diff-helper]::
 | 
						|
	Generates patch format output for git-diff-*
 | 
						|
 | 
						|
link:git-ssh-push.html[git-ssh-push]::
 | 
						|
	Helper "server-side" program used by git-ssh-pull
 | 
						|
 | 
						|
 | 
						|
 | 
						|
Identifier Terminology
 | 
						|
----------------------
 | 
						|
<object>::
 | 
						|
	Indicates the sha1 identifier for any type of object
 | 
						|
 | 
						|
<blob>::
 | 
						|
	Indicates a blob object sha1 identifier
 | 
						|
 | 
						|
<tree>::
 | 
						|
	Indicates a tree object sha1 identifier
 | 
						|
 | 
						|
<commit>::
 | 
						|
	Indicates a commit object sha1 identifier
 | 
						|
 | 
						|
<tree-ish>::
 | 
						|
	Indicates a tree, commit or tag object sha1 identifier.  A
 | 
						|
	command that takes a <tree-ish> argument ultimately wants to
 | 
						|
	operate on a <tree> object but automatically dereferences
 | 
						|
	<commit> and <tag> objects that point at a <tree>.
 | 
						|
 | 
						|
<type>::
 | 
						|
	Indicates that an object type is required.
 | 
						|
	Currently one of: blob/tree/commit/tag
 | 
						|
 | 
						|
<file>::
 | 
						|
	Indicates a filename - always relative to the root of
 | 
						|
	the tree structure GIT_INDEX_FILE describes.
 | 
						|
 | 
						|
Symbolic Identifiers
 | 
						|
--------------------
 | 
						|
Any git comand accepting any <object> can also use the following
 | 
						|
symbolic notation:
 | 
						|
 | 
						|
HEAD::
 | 
						|
	indicates the head of the repository (ie the contents of
 | 
						|
	`$GIT_DIR/HEAD`)
 | 
						|
<tag>::
 | 
						|
	a valid tag 'name'+
 | 
						|
	(ie the contents of `$GIT_DIR/refs/tags/<tag>`)
 | 
						|
<head>::
 | 
						|
	a valid head 'name'+
 | 
						|
	(ie the contents of `$GIT_DIR/refs/heads/<head>`)
 | 
						|
<snap>::
 | 
						|
	a valid snapshot 'name'+
 | 
						|
	(ie the contents of `$GIT_DIR/refs/snap/<snap>`)
 | 
						|
 | 
						|
 | 
						|
File/Directory Structure
 | 
						|
------------------------
 | 
						|
The git-core manipulates the following areas in the directory:
 | 
						|
 | 
						|
 .git/	       The base (overridden with $GIT_DIR)
 | 
						|
   objects/    The object base (overridden with $GIT_OBJECT_DIRECTORY)
 | 
						|
     ??/       'First 2 chars of object' directories
 | 
						|
 | 
						|
It can interrogate (but never updates) the following areas:
 | 
						|
 | 
						|
   refs/       Directories containing symbolic names for objects
 | 
						|
	       (each file contains the hex SHA1 + newline)
 | 
						|
     heads/    Commits which are heads of various sorts
 | 
						|
     tags/     Tags, by the tag name (or some local renaming of it)
 | 
						|
     snap/     ????
 | 
						|
   ...         Everything else isn't shared
 | 
						|
   HEAD        Symlink to refs/heads/<something>
 | 
						|
 | 
						|
Higher level SCMs may provide and manage additional information in the
 | 
						|
GIT_DIR.
 | 
						|
 | 
						|
Terminology
 | 
						|
-----------
 | 
						|
Each line contains terms which you may see used interchangeably
 | 
						|
 | 
						|
 object database, .git directory
 | 
						|
 directory cache, index
 | 
						|
 id, sha1, sha1-id, sha1 hash
 | 
						|
 type, tag
 | 
						|
 | 
						|
 | 
						|
Environment Variables
 | 
						|
---------------------
 | 
						|
Various git commands use the following environment variables:
 | 
						|
 | 
						|
The git Repository
 | 
						|
~~~~~~~~~~~~~~~~~~
 | 
						|
These environment variables apply to 'all' core git commands. Nb: it
 | 
						|
is worth noting that they may be used/overridden by SCMS sitting above
 | 
						|
git so take care if using Cogito etc
 | 
						|
 | 
						|
'GIT_INDEX_FILE'::
 | 
						|
	This environment allows the specification of an alternate
 | 
						|
	cache/index file. If not specified, the default of
 | 
						|
	`$GIT_DIR/index` is used.
 | 
						|
 | 
						|
'GIT_OBJECT_DIRECTORY'::
 | 
						|
	If the object storage directory is specified via this
 | 
						|
	environment variable then the sha1 directories are created
 | 
						|
	underneath - otherwise the default `$GIT_DIR/objects`
 | 
						|
	directory is used.
 | 
						|
 | 
						|
'GIT_ALTERNATE_OBJECT_DIRECTORIES'::
 | 
						|
	Due to the immutable nature of git objects, old objects can be
 | 
						|
	archived into shared, read-only directories. This variable
 | 
						|
	specifies a ":" seperated list of git object directories which
 | 
						|
	can be used to search for git objects. New objects will not be
 | 
						|
	written to these directories.
 | 
						|
 | 
						|
'GIT_DIR'::
 | 
						|
	If the 'GIT_DIR' environment variable is set then it specifies
 | 
						|
	a path to use instead of `./.git` for the base of the
 | 
						|
	repository.
 | 
						|
 | 
						|
git Commits
 | 
						|
~~~~~~~~~~~
 | 
						|
'GIT_AUTHOR_NAME'::
 | 
						|
'GIT_AUTHOR_EMAIL'::
 | 
						|
'GIT_AUTHOR_DATE'::
 | 
						|
'GIT_COMMITTER_NAME'::
 | 
						|
'GIT_COMMITTER_EMAIL'::
 | 
						|
	see link:git-commit-tree.html[git-commit-tree]
 | 
						|
 | 
						|
git Diffs
 | 
						|
~~~~~~~~~
 | 
						|
'GIT_DIFF_OPTS'::
 | 
						|
'GIT_EXTERNAL_DIFF'::
 | 
						|
	see the "generating patches" section in :
 | 
						|
	link:git-diff-cache.html[git-diff-cache];
 | 
						|
	link:git-diff-files.html[git-diff-files];
 | 
						|
	link:git-diff-tree.html[git-diff-tree]
 | 
						|
 | 
						|
Discussion
 | 
						|
----------
 | 
						|
include::../README[]
 | 
						|
 | 
						|
Author
 | 
						|
------
 | 
						|
Written by Linus Torvalds <torvalds@osdl.org> and the git-list <git@vger.kernel.org>.
 | 
						|
 | 
						|
Documentation
 | 
						|
--------------
 | 
						|
Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
 | 
						|
 | 
						|
GIT
 | 
						|
---
 | 
						|
Part of the link:git.html[git] suite
 | 
						|
 |