Commit graph

302 commits

Author SHA1 Message Date
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
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
Linus Torvalds
75118b13bc Ass a "merge-cache" helper program to execute a merge on
any unmerged files.

This one doesn't actually do the merging, but it makes it
easy to script the programs that do using it.
2005-04-17 19:52:54 -07:00
Brad Roberts
74b2428f55 [PATCH] fork optional branch point normazilation
Fix remove_specials for real.  The second half logic needs the original
head of the string.

Signed-off-by: Brad Roberts <braddr@puremagic.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-17 19:12:14 -07:00
Linus Torvalds
d9f98eebcd Ignore any unmerged entries for "checkout-cache -a".
They don't "exist" yet, and you need to merge them first.
2005-04-17 18:39:14 -07:00
Linus Torvalds
5e5128ed1c Remove extraneous ',' ';' and '.' characters from the full name gecos field.
Apparently some distributions tend to have space for phone numbers etc there.
2005-04-17 16:52:54 -07:00
Linus Torvalds
08ca0b04ba Make the revision tracking track the object types too.
This allows fsck to verify not just that an object exists, but
also that it has the type it was expected to have.
2005-04-17 16:19:32 -07:00
Linus Torvalds
d0d7cbe730 Make "commit-tree" check the input objects more carefully.
Let's not allow trivially bogus commits. I did one for the first
trial of the first kernel git merge. fsck found it ok, but..
2005-04-17 15:26:13 -07:00
Linus Torvalds
7d60ad7cc9 Make "parse_commit" return the "struct revision" for the commit.
Also, make it a fatal error to pass in a non-commit object. The callers
never checked, so better check here.

This simplifies merge-base further. It's now so trivial that it's almost
ridiculous.
2005-04-17 12:40:18 -07:00
Linus Torvalds
6683463ed6 Do a very simple "merge-base" that finds the most recent common
parent of two commits.

The question of "best" commit can probably be tweaked almost arbitrarily.
In particular, trying to take things like how big the tree differences
are into account migt be a good idea. This one is just very simple.
2005-04-17 12:18:17 -07:00
Linus Torvalds
15000d7899 Make "rev-tree.c" use the new-and-improved "mark_reachable()"
It used to have its own specialized version for marking the
sub-reachability bits.
2005-04-17 12:09:20 -07:00
Linus Torvalds
01796b0e91 Make "revision.h" slightly better to use.
- mark_reachable() can be more generic, marking the reachable revisions
   with an arbitrary mask.
 - date parsing will parse to a date of 0 rather than ULONG_MAX for the
   bad old case, sorting the dates correctly.
2005-04-17 12:07:00 -07:00
Linus Torvalds
89d21f4b64 Move "parse_commit()" into common revision.h file.
This also drops the old-style date parsing. We just don't care
enough, since we dropped that format pretty early.

Yes, this could do with some cleanup, and a common library file.
Some day.
2005-04-17 11:39:18 -07:00
Brad Roberts
7223a88ce7 [PATCH] fix for memory leak in write-tree.c
Fix a memory leak in write-tree.c, not freeing the directory buffer.
2005-04-17 10:55:12 -07:00
Petr Baudis
e8871e88ad [PATCH] Fix +x-related show-diff false positives
This fixes show-diff listing all +x files as differring.

Signed-off-by: Petr Baudis <pasky@ucw.cz>

[ That's what I get for working on a G5 - my testing was all
  big-endian in the first place.  -- Linus ]

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-17 10:04:48 -07:00
Junio C Hamano
c747fc6fac [PATCH] Remove unused arguments from index_fd()
The function index_fd() in update-cache.c takes 5 arguments, but
two is not necessary and one that is a pointer to a structure
really needs to be a pointer to one member of that structure.
This patch cleans it up.

Also it removes printf() apparently left after initial
debugging.

Signed-off-by: Junio C Hamano <junkio@cox.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-17 10:02:22 -07:00
Junio C Hamano
a38800fde2 [PATCH] Better error message from checkout-cache for unmerged files.
The checkout-cache command says "file is not in the cache" when
an unmerged path is given.  This patch adds code to distinguish
the unmerged and the nonexistent cases and gives an appropriate
error message.

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