Commit graph

57369 commits

Author SHA1 Message Date
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
Junio C Hamano 8f3671dcd9 [PATCH] show-diff.c: simplify show_diff_empty.
This patch removes the custom diff generation code from the
show_diff_empty() function.  Instead, just use show_differences().

This reduces the code size; but more importantly, it is needed for
the later patch to give diff options.

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 d0db466326 [PATCH] show-diff.c: check unreadbale blob.
This patch fixes show-diff to detect unreadable blob and warn
instead of going ahead and crashing.

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 c157d37674 [PATCH] show-diff.c: clean up private buffer use.
This patch fixes sq_expand() and show_differences() not to use and
hold onto its privately allocated buffer, which was a misguided
attempt to reduce calls to malloc but made later changes harder.

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
Linus Torvalds 00829b5def Add "update-cache --refresh" to git-pull-script to make sure
out index is all ready to go after a pull.

Noted by Russell King
2005-04-18 15:01:48 -07:00
Linus Torvalds e3b4be7f6c Change merge-cache and git-merge-one-file to use the SHA1 of the file
instead of a checked-out temporary copy.

If merging requires a checked-out-copy, we now do so with "unpack-file".
2005-04-18 14:17:58 -07:00
Linus Torvalds 3407bb4940 Add "unpack-file" helper that unpacks a sha1 blob into a tmpfile. 2005-04-18 14:11:01 -07:00
Linus Torvalds e590d694ea Add more header dependencies.
Yeah, my Makefiles are always a total disaster. Better this than autotools
or some horror like that, though.
2005-04-18 13:12:21 -07:00
Linus Torvalds 0fcfd160b0 Split up read-cache.c into more logical clumps.
Do the usage and error reporting in "usage.c", and the sha1 file
accesses in "sha1_file.c".

Small, nice, easily separated parts. Good.
2005-04-18 13:04:43 -07:00
Linus Torvalds 0a02ce72d9 Clean up the Makefile a bit.
This introduces the concept of git "library" objects that
the real programs use, and makes it easier to add such things
to a "libgit.a".

This will also make it trivial to split the current "read-cache.o"
into more aptly named pieces (it does a lot more than just read
the index file).
2005-04-18 12:49:39 -07:00
Linus Torvalds 839a7a06f3 Add the simple scripts I used to do a merge with content conflicts.
They sure as hell aren't perfect, but they allow you to do:

	./git-pull-script {other-git-directory}

to do the initial merge, and if that had content clashes, you do

	merge-cache ./git-merge-one-file-script -a

which tries to auto-merge. When/if the auto-merge fails, it will
leave the last file in your working directory, and you can edit
it and then when you're happy you can do "update-cache filename"
on it. Re-do the merge-cache thing until there are no files left
to be merged, and now you can write the tree and commit:

	write-tree
	commit-tree .... -p $(cat .git/HEAD) -p $(cat .git/MERGE_HEAD)

and you're done.
2005-04-18 12:15:10 -07:00
Linus Torvalds b51ad43140 Merge the new object model thing from Daniel Barkalow
This was a real git merge with conflicts. I'll commit the scripts I used
to do the merge next.

Not pretty, but it's half-way functional.
2005-04-18 12:12:00 -07:00
James Bottomley a4b7dbef4e [PATCH] fix bug in read-cache.c which loses files when merging a tree
I noticed this when I tried a non-trivial scsi merge and checked the
results against BK.  The problem is that remove_entry_at() actually
decrements active_nr, so decrementing it in add_cache_entry() before
calling remove_entry_at() is a double decrement (hence we lose cache
entries at the end).
2005-04-18 11:44:31 -07:00
Daniel Barkalow b5039db6d2 [PATCH] Switch implementations of merge-base, port to parsing
This switches to my implementation of merge-base, but with the new parsing
library.

Signed-Off-By: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-18 11:39:48 -07:00
Daniel Barkalow ff5ebe39b0 [PATCH] Port fsck-cache to use parsing functions
This ports fsck-cache to use parsing functions. Note that performance
could be improved here by only reading each object once, but this requires
somewhat more complicated flow control.

Signed-Off-By: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-18 11:39:48 -07:00
Daniel Barkalow 5873b67eef [PATCH] Port rev-tree to parsing functions
This ports rev-tree to use the parsing functions introduced in the
previous patches.

Signed-Off-By: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-18 11:39:48 -07:00
Daniel Barkalow 175785e5ff [PATCH] Implementations of parsing functions
This implements the parsing functions.

Signed-Off-By: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-18 11:39:48 -07:00
Daniel Barkalow 6eb8ae00d4 [PATCH] Header files for object parsing
This adds the structs and function declarations for parsing git objects.

Signed-Off-By: Daniel Barkalow <barkalow@iabervon.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-18 11:39:48 -07:00
Junio C Hamano 1bc992acac [PATCH] Fix confusing behaviour of update-cache --refresh on unmerged paths.
The "update-cache --refresh" command attempts refresh_entry()
on unmerged path, which results in as many "needs update" messages
as there are unmerged stages for that path.  This does not do
any harm to the working directory, but it is confusing.

Here is a fix.

Signed-off-by: Junio C Hamano <junkio@cox.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-18 10:42:48 -07:00
Linus Torvalds 6ad6d3d36c Update README to reflect the hierarchical tree objects,
and other newfangled things like merging.

Also, talk more about the actual operations, and give some
rough examples of what you can do.
2005-04-17 21:52:23 -07:00
Junio C Hamano 64982f7510 [PATCH] (resend) show-diff.c off-by-one fix
The patch to introduce shell safety to show-diff has an
off-by-one error.  Here is an fix.

Signed-off-by: Junio C Hamano <junkio@cox.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-17 20:31:40 -07:00