Commit Graph

1846 Commits

Author SHA1 Message Date
Linus Torvalds
3607c27f5f Allow zero-sized files to be checked in.
The kernel may not want it, but others probably do.

Noted (again) by Junio Hamano.
2005-04-11 18:02:00 -07:00
Linus Torvalds
771364af0e Make the rev-tree output more regular. This is the last
change. Promise.

It now always outputs all the revisions as <sha1>:<reachability>, where the
reachability is the bitmask of how that revision was reachable from the
commits in the argument list.

Trivially, if there is only one commit, the reachability will always be
(1 << 0) == 1 for all reachable revisions, and there won't be any edges
(so the "--edges" flag only makes sense with multiple commit keys).
2005-04-11 17:40:58 -07:00
Linus Torvalds
28258afe91 Make "rev-tree" capable of showing the difference in reachability between two
or more commit points.

This is important both to know what the difference between two commit
points is, but also to figure out where to try to merge from.
2005-04-11 17:23:58 -07:00
Linus Torvalds
97d9c3cdea Make "rev-tree" more efficient and more useful.
Slight change of output format: it now lists all parents on the same line.

This allows it to work on initial commits too (which have no parents), and
also makes the output format a lot more intuitive.
2005-04-11 16:42:13 -07:00
Linus Torvalds
4bb04f2190 Rename ".dircache" directory to ".git"
I started out calling the tool "dircache". That's clearly moronic.
2005-04-11 15:47:57 -07:00
Linus Torvalds
9614b8dcf8 Fix stale index.lock file removal using "atexit()".
Problem noted by Randy Dunlap.
2005-04-11 15:39:26 -07:00
Linus Torvalds
84fe972055 Add a "rev-tree" helper, which calculates the revision
tree graph.

It's quite fast when the commit-objects are cached, but since
it has to walk every single commit-object, it also allows you
to cache an old state and just add on top of that.
2005-04-11 13:55:10 -07:00
Linus Torvalds
0dcad32ae2 Fix "usage()" to do the missing line termination.
It got broken when I changed it to use stdarg.
2005-04-11 13:53:49 -07:00
Linus Torvalds
32d197f18d Fix "update-cache" not fixing up the size field as appropriate.
The size field isn't in the tree information, so we need to
update it if the sha1 matches.
2005-04-11 11:33:58 -07:00
Linus Torvalds
cfd88e2b7a Make the default directory permissions more lax.
After all, if you want to not allow others to read your
stuff, set your "umask" appropriately or make sure the
parent directories aren't readable/executable.
2005-04-11 10:24:41 -07:00
Linus Torvalds
075b845a85 Add a COPYING notice, making it explicit that the license is GPLv2.
Let's bite the v3 bullet when it comes, although if people want to,
they can just state "or later at discretion of Linus" in their copyright
messages.
2005-04-11 10:18:16 -07:00
Linus Torvalds
711cf3a026 Make "update-cache --refresh" do what it really should do: just
refresh the "stat" information.

We need this after having done a "read-tree", for example, when the
stat information does not match the checked-out tree, and we want to
start getting efficient cache matching against the parts of the tree
that are already up-to-date.
2005-04-11 09:39:21 -07:00
Linus Torvalds
bf16c71e2f Fix up commit-tree/diff-tree user interface issues.
No, this doesn't make them easy to use, but makes diff-tree use
the "-r" flag for "recursive" (not "-R") and makes commit-tree
use AUTHOR_xxx environment flags (not COMMITTER_xxx) to match what
it actually does.
2005-04-11 08:37:17 -07:00
Linus Torvalds
91af81a98e Oops. Fix bad initialization of the "seen" array, causing us to not
properly clear the reference count at init time. It happened to work
for me by pure luck.

Until it broke, and my unreferenced commit suddenly looked referenced
again. Fixed.
2005-04-10 23:33:52 -07:00
Linus Torvalds
f1257f3a33 Oops, the actual 'printf' for missing objects was missing.
Which made fsck very quiet about objects it hadn't found. So add
it. 

We'll need to make things like these optional, because it's
perfectly ok to have partial history if you don't want it,
and don't want to go backwards. But for development, it's best
to always complain about missing sha1 object files that are
referenced from somewhere else.
2005-04-10 23:22:59 -07:00
Linus Torvalds
8ba0bbb237 Add connectivity tracking to fsck.
This shows that I've lost track of one commit already. Most likely
because I forgot to update the .dircache/HEAD file when doing a
commit, so that the next commit referenced not the top-of-tree, but
the one older commit.

Having dangling commits is fine (in fact, you should always have
at least _one_ dangling commit in the top-of-tree). But it's
good to know about them.
2005-04-10 23:13:09 -07:00
Linus Torvalds
76e7f4ec48 Fix off-by-one error in removal of cache entry.
Also make the return value of "cache_name_pos()" be sane: positive
or zero if we found it (it's the index into the cache array), and
"-pos-1" to indicate where it should go if we didn't.
2005-04-10 22:06:50 -07:00
Linus Torvalds
262e82b4a7 Fix diff-tree recursion.
And, perhaps more importantly, fix the fact that if a filename changed from a
directory to a file (or vice versa), we must consider it a delete and an add,
not a "filechange".
2005-04-10 21:49:26 -07:00
Linus Torvalds
eeb7991695 Simplify "diff-tree" output, and only keep track of one single name-base.
During original development I had different name-bases for source and
destination, so that I could make the output show how it got removed 
from "tree a" and added to "tree b", but we don't want that. We only
do recursive diffs on anything where the bases are exactly the same,
so we might as well just work with a single base.

Also, make the output for "changed" be a single line, since people
hated the separate '<' / '>' format. They were right. It sucked.
2005-04-10 15:08:02 -07:00
Linus Torvalds
73134b6d3f Add "-R" flag to "diff-tree", so that it will recursively traverse a tree of trees
as it diffs them.

This makes diff-tree usable again in the new world order.
2005-04-10 14:03:58 -07:00
Linus Torvalds
121481abf8 Make "update-cache" a bit friendlier to use (and harder to mis-use).
It now requires the "--add" flag before you add any new files, and
a "--remove" file if you want to mark files for removal. And giving
it the "--refresh" flag makes it just update all the files that it
already knows about.
2005-04-10 11:32:54 -07:00
Linus Torvalds
d6d3f9d012 This implements the new "recursive tree" write-tree.
It's got some debugging printouts etc still in it, but testing on the
kernel seems to show that it does indeed fix the issue with huge tree
files for each commit.
2005-04-09 17:09:34 -07:00
Linus Torvalds
4e6616ab77 Make fsck-cache warn about old-style tree objects that have full
pathnames in them. We're migrating away from that.

This will cause tons of warnings for the current "sparse" archive,
but hell, better now than later.
2005-04-09 15:47:03 -07:00
Linus Torvalds
f768846e34 Teach "fsck" and "read-tree" about recursive tree-nodes.
This is totally untested, since we can't actually _write_ things that
way yet, but I'll get to that next, I hope. That should fix the
huge wasted space for kernel-sized tree objects.
2005-04-09 15:36:41 -07:00
Linus Torvalds
16d4d1ba6c Make "fsck-cache" print out all the root commits it finds.
Once I do the reference tracking, I'll also make it print out all the
HEAD commits it finds, which is even more interesting.
2005-04-09 13:02:30 -07:00
Linus Torvalds
9174026cfe Add "diff-tree" program to show which files have changed between two trees.
Very useful for creating diffs efficiently, and in general to see what has
changed in the namespace.
2005-04-09 13:00:54 -07:00
Linus Torvalds
79517a067a Export "cache_name_compare()" helper function.
The "diff-tree" program needs it.
2005-04-09 12:59:11 -07:00
Linus Torvalds
83adac3c57 Make "read-tree" read the tree into the current directory cache.
It will no longer update the actual working directory, just the
cache. To update the working directory, you need to use "checkout-cache".
2005-04-09 12:11:25 -07:00
Linus Torvalds
197ee8c970 Make "write_cache()" and friends available as generic routines.
This is needed for the change to make "read-tree" just read into the
cache (and then you do a "checkout-cache" to update your current dir
contents).
2005-04-09 12:09:27 -07:00
Linus Torvalds
8d3af1d532 Fix "checkout-cache.c" mis-use of read_sha1_file() interface.
It's supposed to test the returned file type, not think that read_sha1_file()
tests it. Confusion from "cat-file" command line usage.
2005-04-09 11:24:41 -07:00
Linus Torvalds
f7391ce3bd Fix up "checkout-cache" a bit
Make the warnings have newlines, and don't stop "checkout-cache -a"
just because a file already exists.
2005-04-09 09:59:44 -07:00
Linus Torvalds
33db5f4d90 Add a "checkout-cache" command which does what the name suggests.
I'll also eventually change "read-tree" to only update the cache
information, instead of doing a checkout of the tree. Much nicer.
2005-04-09 09:53:05 -07:00
Linus Torvalds
734aab758c Make the cache stat information comparator public.
Like the cache filename finder, it's a generically useful function,
rather than something specific to the current "show-diff" thing.
2005-04-09 09:48:20 -07:00
Linus Torvalds
eb38c22f53 Make "cache_name_pos()" available to others.
It finds the cache entry position for a given name, and is
generally useful. Sure, everybody can just scan the active
cache array, but since it's sorted, you actually want to
search it with a binary search, so let's not duplicate that
logic all over the place.
2005-04-09 09:26:55 -07:00
Linus Torvalds
59c1e24980 Fix missing return values and some error tests for empty index files
Patches from Dave Jones and Ingo Molnar, but since I don't have any
infrastructure in place to use the old patch applicator scripts I
am trying to build up, I ended up fixing the thing by hand instead.

Credit where credit is due, though. Nice to see that people are
taking a look at the project even in this early stage.
2005-04-09 00:25:22 -07:00
Linus Torvalds
1ea34e365b Make fsck-cache start parsing the object types, and checking their
internal format.

This doesn't yet check the reachability information, but we're getting
there.. Slowly.
2005-04-08 17:11:14 -07:00
Linus Torvalds
9426167765 Add "-lz" to link line to get in zlib.
Not all Linux distributions seem to need it (notably not YDL on ppc64), but
enough ones obviously do.
2005-04-08 15:31:19 -07:00
Linus Torvalds
7660a188df Add new fsck-cache to Makefile.
This is what happens when there are no nice tools to tell you to do things
properly.
2005-04-08 15:04:51 -07:00
Linus Torvalds
20222118ae Add first cut at "fsck-cache" that validates the SHA1 object store.
It doesn't complain about mine. But it also doesn't yet check for
inter-object reachability etc.
2005-04-08 15:02:42 -07:00
Linus Torvalds
2ade934026 Add "check_sha1_signature()" helper function
And fix up header declarations.
2005-04-08 15:01:15 -07:00
Linus Torvalds
24778e335a Factor out "read_sha1_file" into mapping/inflating/unmapping.
This allows us to also actually check the sha1 hash using these
routines. Needed for the "fsck" thing.
2005-04-08 14:42:29 -07:00
Linus Torvalds
19b2860cba Use "-Wall -O2" for the compiler to get more warnings.
And fix up the warnings that it pointed out. Let's keep the tree
clean from early on.

Not that the code is very beautiful anyway ;)
2005-04-08 09:59:28 -07:00
Linus Torvalds
bf0c6e839c Make "cat-file" output the file contents to stdout.
New syntax: "cat-file -t <sha1>" shows the tag, while "cat-file <tag> <sha1>"
outputs the file contents after checking that the supplied tag matches.
2005-04-08 09:16:38 -07:00
Linus Torvalds
e497ea2a9b Make read-tree actually unpack the whole tree.
I needed this to make a "sparse" archive conversion from my old
BitKeeper tree data. The scripts to do the conversion are just
incredibly ugly, but they seem to validate the notion that you
can actually use this silly 'git' thing to save your history in.
2005-04-07 21:03:28 -07:00
Linus Torvalds
8bc9a0c769 Add copyright notices.
The tool interface sucks (especially "committing" information, which is just
me doing everything by hand from the command line), but I think this is in
theory actually a viable way of describing the world. So copyright it.
2005-04-07 15:16:10 -07:00
Linus Torvalds
e83c516331 Initial revision of "git", the information manager from hell 2005-04-07 15:13:13 -07:00