Commit Graph

28389 Commits

Author SHA1 Message Date
Linus Torvalds
b5af910727 New "diff-cache" implementation.
This one is about a million times simpler, and much more likely to be
correct too.

Instead of trying to match up a tree object against the index, we just
read in the tree object side-by-side into the index, and just walk the
resulting index file. This was what all the read-tree cleanups were
all getting to.
2005-04-22 17:15:28 -07:00
Linus Torvalds
94537c78a8 Move "read_tree()" to "tree.c" to be used as a generic helper function.
Next step: make "diff-cache" use it.
2005-04-22 16:42:37 -07:00
Linus Torvalds
aba0668247 Clean up and simplify read-tree a bit.
This is preparation for moving parts of it into "tree.c" to be used
as a library function.
2005-04-22 16:35:06 -07:00
Linus Torvalds
cef661fc79 Add support for alternate SHA1 library implementations.
This one includes the Mozilla SHA1 implementation sent in by Edgar Toernig.
It's dual-licenced under MPL-1.1 or GPL, so in the context of git, we
obviously use the GPL version. 

Side note: the Mozilla SHA1 implementation is about twice as fast as the
default openssl one on my G5, but the default openssl one has optimized
x86 assembly language on x86. So choose wisely.
2005-04-21 12:33:22 -07:00
Linus Torvalds
cc1ad5c830 Split up Makefile library list handling with separate entries for
zlib and libssl.

I'll start giving people choices here..
2005-04-21 12:14:46 -07:00
Linus Torvalds
b2c0071867 Include <limits.h> in commit.c for ULONG_MAX. Remove old "revision.h".
The old revision.h helper header isn't used any more, but I never noticed
it until I started grepping for ULONG_MAX users.
2005-04-21 11:21:33 -07:00
Linus Torvalds
bb233d690a Add support for a "GIT_INDEX_FILE" environment variable.
We use that to specify alternative index files, which can be useful
if you want to (for example) generate a temporary index file to do
some specific operation that you don't want to mess with your main
one with.

It defaults to the regular ".git/index" if it hasn't been specified.
2005-04-21 10:55:18 -07:00
Linus Torvalds
65bb49144d Add the ability to prefix something to the pathname to "checkout-cache.c"
This basically makes it trivial to use checkout-cache as a "export as
tree" function. Just read the desired tree into the index, and do a

	checkout-cache --prefix=export-dir/ -a

and checkout-cache will "export" the cache into the specified directory.

NOTE! The final "/" is important. The exported name is literally just
prefixed with the specified string, so you can also do something like

	checkout-cache --prefix=.merged- Makefile

to check out the currently cached copy of "Makefile" into the file
".merged-Makefile".
2005-04-21 10:15:02 -07:00
Linus Torvalds
94dfb7f2e3 Fix NSEC compile problem, and properly parse the rev-tree cmd line.
The rev-tree thing just happened to work. It shouldn't have.
2005-04-21 09:58:24 -07:00
Junio C Hamano
c5bac17ad2 [PATCH] Usage-string fixes.
Usage string fixes to make maintenance easier (only one instance
of a string to update not multiple copies).  I've spotted and
corrected inconsistent usage text in diff-tree while doing this.

Also diff-cache and read-tree usage text have been corrected to
match their up-to-date features.  Earlier, neither "--cached"
form of diff-cache nor "-m single-merge" form of read-tree were
described. 

Signed-off-by: Junio C Hamano <junkio@cox.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-20 19:49:16 -07:00
Linus Torvalds
80913d4364 Duh, just make git-export.c use the proper syntax, everything is fine. 2005-04-20 19:19:11 -07:00
Linus Torvalds
860edf7a71 Fix up some problems from the commit->tree helper patch 2005-04-20 18:49:41 -07:00
Linus Torvalds
32347c3752 Fix up git-export to use the lower-level interfaces for diff generation.
The high-level helpers seem to have forgotten what to do with sha1
names.
2005-04-20 18:48:27 -07:00
Junio C Hamano
b12ec373b8 [PATCH] Teach read-tree about commit objects
Updates read-tree to use read_tree_with_tree_or_commit_sha1()
function.  The command can take either tree or commit IDs with
this patch.

The change involves a slight modification of how it recurses down
the tree.  Earlier the caller only supplied SHA1 and the recurser
read the object using it, but now it is the caller's responsibility
to read the object and give it to the recurser.  This matches the
way recursive behaviour is done in other tree- related commands.

Signed-off-by: Junio C Hamano <junkio@cox.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-20 18:06:50 -07:00
Junio C Hamano
23b127ed08 [PATCH] Teach ls-tree about commit objects
Updates ls-tree.c to use read_tree_with_tree_or_commit_sha1()
function.  The command can take either tree or commit IDs with
this patch.

Signed-off-by: Junio C Hamano <junkio@cox.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-20 18:06:50 -07:00
Junio C Hamano
c1fdf2a6ab [PATCH] Teach diff-tree about commit objects
Updates diff-tree.c to use read_tree_with_tree_or_commit_sha1()
function.  The command can take either tree or commit IDs with this patch.

Signed-off-by: Junio C Hamano <junkio@cox.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-20 18:06:50 -07:00
Junio C Hamano
38357e6703 [PATCH] Teach diff-cache about commit objects
Updates diff-cache.c to use read_tree_with_tree_or_commit_sha1()
function.  The end-user visible result is the same --- the command
takes either tree or commit ID.

Signed-off-by: Junio C Hamano <junkio@cox.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-20 18:06:49 -07:00
Junio C Hamano
f4913f91a9 [PATCH] Accept commit in some places when tree is needed.
This patch implements read_tree_with_tree_or_commit_sha1(),
which can be used when you are interested in reading an unpacked
raw tree data but you do not know nor care if the SHA1 you
obtained your user is a tree ID or a commit ID.  Before this
function's introduction, you would have called read_sha1_file(),
examined its type, parsed it to call read_sha1_file() again if
it is a commit, and verified that the resulting object is a
tree.  Instead, this function does that for you.  It returns
NULL if the given SHA1 is not either a tree or a commit.

Signed-off-by: Junio C Hamano <junkio@cox.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-20 18:06:49 -07:00
Andre Noll
6ca25ed331 [PATCH] simplify Makefile
Use a generic rule for executables that depend only on the corresponding
.o and on $(LIB_FILE).

Signed-Off-By: Andre Noll <maan@systemlinux.org>
Signed-Off-By: Linus Torvalds <torvalds@osdl.org>
2005-04-20 13:10:13 -07:00
Linus Torvalds
2dee060968 Improve build: add <unistd.h> and use -O2 instead of -O3
(Nobody should use -O3. It just makes bad inlining decisions).
2005-04-20 13:00:08 -07:00
Linus Torvalds
ca9be05421 Make the sha1 of the index file go at the very end of the file.
This allows us to both calculate it and verify it faster.
2005-04-20 12:36:41 -07:00
Linus Torvalds
4990aadc4c Speed up index file writing by chunking it nicely.
No point in making 17,000 small writes when you can make just
a couple of hundred nice 8kB writes instead and save a lot
of time.
2005-04-20 12:16:57 -07:00
Linus Torvalds
706bc531a1 Make "write_sha1_file()" exit early if the file already exists.
Avoid the compression.
2005-04-20 09:28:05 -07:00
James Bottomley
ad4e9ce4f9 [PATCH] make dotest more amenable to commit message editing
This makes "dotest" a lot nicer to sue, especially for people who were
used to editing the commit comments after-the-fact in BK, which git
doesn't apply. 

he syntax is

	dotest [-q] mailbox [signoff]

so the command line operates exactly as you're used to.  If you supply
the -q it will query before applying (I also added the [a]pply all the
rest option).  If the signoff file is absent, no signoff line gets
added. 

There's also one addition in this:  a checkout-cache line.  I added that
for poor saps like me whose laptop takes minutes to checkout a full
build tree, so I can run dotest in a directory with no checked out
files.
2005-04-20 08:23:00 -07:00
Linus Torvalds
f18ca73166 The recent hash/compression switch-over missed the blob creation.
Happily, convert-cache just magically fixes all errors.
2005-04-20 01:34:54 -07:00
Linus Torvalds
d98b46f8d9 Do SHA1 hash _before_ compression.
And add a "convert-cache" program to convert from old-style
to new-style.
2005-04-20 01:10:46 -07:00
Zach Welch
cb126d8d79 [PATCH] init-db.c: create and use safe_create_dir helper
Factor mkdir calls into common safe_create_dir subroutine.

Signed-Off-By: Zach Welch <zw@superlucidity.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-19 21:48:15 -07:00
Zach Welch
addb315d34 [PATCH] init-db.c: normalize env var handling.
Normalize init-db environment variable handling, allowing the creation
of object directories with something other than DEFAULT_DB_ENVIRONMENT.

Signed-Off-By: Zach Welch <zw@superlucidity.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-19 21:48:15 -07:00
Zach Welch
4696cb93d1 [PATCH] init-db.c: cleanup comments
Consolidate comments at top of main.

Signed-Off-By: Zach Welch <zw@superlucidity.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-19 21:48:15 -07:00
Linus Torvalds
abdb007d1f Make "diff-tree" take commit objects too, like "diff-cache" does.
Sometimes it's just easier to not have to look up the "commit"->"tree"
translation by hand first. It's trivial to do inside diff-tree, and
it's just being polite.
2005-04-19 21:39:28 -07:00
Linus Torvalds
e74f8f6aa7 Add "diff-cache" helper program to compare a tree (or commit) with
the current cache state and/or working directory.

Very useful to see what has changed since the last commit, either in
the index file or in the whole working directory.

Also very possibly very buggy. Matching the two up is not entirely
trivial.
2005-04-19 21:00:09 -07:00
Linus Torvalds
b96afa59eb Make us be better at guessing a good hostname for the email.
It's still just a guess, and the result is not a real email
address anyway. If you want to, you can use COMMIT_AUTHOR_EMAIL
to correct for any git guesses.
2005-04-19 15:46:06 -07:00
Linus Torvalds
17cf781661 Remove duplicate getenv(DB_ENVIRONMENT) call
Noted by Tony Luck.
2005-04-19 14:11:06 -07:00
Linus Torvalds
c9823a427a Add stupid "git export" thing, which can export a git archive
as a set of patches and commentary.

You'd want something like this if you are tracking a git archive
in another SCM format. Notably, we want something like that for
BK users.
2005-04-19 14:00:34 -07:00
Linus Torvalds
7fa6b4e769 Fix init-db shared database case
Noted by Aaron Straus
2005-04-19 13:59:17 -07:00
Linus Torvalds
8ccfbf3279 Update "git-pull-script" to use "read-tree -m" for
reading a single tree too. That should speed up a
trivial merge noticeably.

Also, don't bother reading back the tree we just wrote
when we committed a real merge. It had better be the
same one we still have..
2005-04-19 12:56:47 -07:00
Linus Torvalds
a3a65234db Make "read-tree" know how to do a "1-way merge".
This one just reads one tree, but picks up any matching stat information
from the old index.
2005-04-19 11:41:18 -07:00
Linus Torvalds
ca016f0e4e Make "read-tree" take the 'stat' information for a merge result from the
old index state if the result matches.

This leaves the stat information in the result tree for any trivial
merges, which is just the way we like it.
2005-04-19 11:16:12 -07:00
Linus Torvalds
4aaef1064a Make git-pull-script do the right thing for symlinked HEAD's.
Also exit gracefully if the HEAD pull failed, rather than use
a possibly stale MERGE_HEAD.
2005-04-19 09:53:58 -07:00
Linus Torvalds
3b7d368f34 Don't parse commit objects more than once.
Yes, the "parse_commit()" already checks for this condition, but
we need to check for it in rev-tree too, so that we don't start
walking the parent chain unnecessarily.
2005-04-19 09:52:24 -07:00
James Bottomley
0a9ea85000 [PATCH] SCSI trees, merges and git status
Doing the latest SCSI merge exposed two bugs in your merge script:

1) It doesn't like a completely new directory (the misc tree contains a
   new drivers/scsi/lpfc)
2) the merge testing logic is wrong.  You only want to exit 1 if the
   merge fails.
2005-04-18 19:55:19 -07:00
Linus Torvalds
6109681994 Add quotes around the subject line that we print out as being applied.
My brain just flipped when it tried to read the "Applying" as part
of the explanation of the patch, and the sentence didn't make any
sense. The quotes make it clear what's going on.
2005-04-18 17:40:32 -07:00
Greg KH
b70070f020 [PATCH] provide better committer information to commit-tree.c
Here's a small patch to commit-tree.c that does two things:
	- allows the committer email address and name to be overridden
	  by environment variables (if you don't like the environment
	  variable names I've used (COMMIT_AUTHOR_NAME,
	  COMMIT_AUTHOR_EMAIL), feel free to change them.)
	- provide the proper domainname to the author/committer email
	  address (otherwise, my address was only showing up as from the
	  hostname.)

This allows people to set sane values for the commit names and email
addresses, preventing odd, private hostnames and domains from being
exposed to the world.

Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-18 17:37:32 -07:00
Linus Torvalds
f43b8abc6f Make fsck-cache print the object type for unreachable objects.
This got lost when I updated to Daniel's new object model.
2005-04-18 17:35:31 -07:00
Junio C Hamano
8c1becff24 [PATCH] show-diff: Remove stale comments
Patch 1/6 in the series has already cleaned the interface to
call sq_expand(), but the comment before that function still
carries the stale interface warning.  Remove it.

Signed-off-by: Junio C Hamano <junkio@cox.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-18 16:51:09 -07:00
Junio C Hamano
0ffb0bcaf6 [PATCH] Do not let rsync obliterate .git/object symbolic link.
Signed-off-by: Junio C Hamano <junkio@cox.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-18 16:49:21 -07:00
Linus Torvalds
e90a4c0ed1 Add "dotest" and "applypatch" scripts to actually make things useful.
Also updates "mailinfo" to write the file list.
2005-04-18 16:11:32 -07:00
Junio C Hamano
4789576e0e [PATCH] show-diff.c: -R option for reverse diff.
This adds -R option to obtain reverse diff.

It may be useful in the merge workflow.  After the base of the working
directory is merged and commited, in the working directory:

    $ read-tree <tree-id-of-merged-tree>
    $ show-diff -R

to re-validate if upstream changes make sense, and/or revert or
conflict with local changes you have in the working files.

Signed-off-by: Junio C Hamano <junkio@cox.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-18 15:07:24 -07:00
Junio C Hamano
ff69ab9ad8 [PATCH] show-diff.c: make diff options customizable.
This makes the diff output formatting options customizable via the
environment variables.  The default is still the Linux kernel style. 

Signed-off-by: Junio C Hamano <junkio@cox.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-18 15:07:24 -07:00
Junio C Hamano
5a6ad74623 [PATCH] show-diff.c: adjust default format for the Linux kernel.
This patch adjusts the default output format of show-diff to match
the Linux kernel style, recommended in Documentation/SubmittingPatches.

Signed-off-by: Junio C Hamano <junkio@cox.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-18 15:07:24 -07:00