Commit graph

177 commits

Author SHA1 Message Date
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
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
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
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