summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2005-04-17Update README to reflect the hierarchical tree objects,Libravatar Linus Torvalds1-109/+401
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[PATCH] (resend) show-diff.c off-by-one fixLibravatar Junio C Hamano1-2/+2
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-17Ass a "merge-cache" helper program to execute a merge onLibravatar Linus Torvalds2-1/+131
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[PATCH] fork optional branch point normazilationLibravatar Brad Roberts1-3/+3
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-17Ignore any unmerged entries for "checkout-cache -a".Libravatar Linus Torvalds1-0/+2
They don't "exist" yet, and you need to merge them first.
2005-04-17Remove extraneous ',' ';' and '.' characters from the full name gecos field.Libravatar Linus Torvalds1-0/+15
Apparently some distributions tend to have space for phone numbers etc there.
2005-04-17Make the revision tracking track the object types too.Libravatar Linus Torvalds3-23/+29
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-17Make "commit-tree" check the input objects more carefully.Libravatar Linus Torvalds1-0/+14
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-17Make "parse_commit" return the "struct revision" for the commit.Libravatar Linus Torvalds2-7/+4
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-17Do a very simple "merge-base" that finds the most recent commonLibravatar Linus Torvalds2-1/+61
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-17Make "rev-tree.c" use the new-and-improved "mark_reachable()"Libravatar Linus Torvalds1-16/+1
It used to have its own specialized version for marking the sub-reachability bits.
2005-04-17Make "revision.h" slightly better to use.Libravatar Linus Torvalds2-7/+11
- 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-17Move "parse_commit()" into common revision.h file.Libravatar Linus Torvalds2-79/+40
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[PATCH] fix for memory leak in write-tree.cLibravatar Brad Roberts1-4/+2
Fix a memory leak in write-tree.c, not freeing the directory buffer.
2005-04-17[PATCH] Fix +x-related show-diff false positivesLibravatar Petr Baudis1-1/+1
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[PATCH] Remove unused arguments from index_fd()Libravatar Junio C Hamano1-9/+6
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[PATCH] Better error message from checkout-cache for unmerged files.Libravatar Junio C Hamano1-2/+9
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-17Fix total permission bogosity in "checkout-cache.c".Libravatar Linus Torvalds1-3/+1
Use the proper octal mode naming instead of random decimal crud, and don't reset the mode after the create with fchmod: the whole point was to let "umask" do its thing. Duh.
2005-04-17[PATCH] update-cache --remove marks the path merged.Libravatar Junio C Hamano1-1/+3
When update-cache --remove is run, resolve unmerged state for the path. This is consistent with the update-cache --add behaviour. Essentially, the user is telling us how he wants to resolve the merge by running update-cache. Signed-off-by: Junio C Hamano <junkio@cox.net> Fixed to do the right thing at the end. Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-17[PATCH] show-diff.c: do not include unused header fileLibravatar Junio C Hamano1-1/+0
This is my bad. I added #include <ctype.h> to the file, which I ended up not using and failed to remove it. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-16Be much more liberal about the file mode bits.Libravatar Linus Torvalds5-6/+21
We only really care about the difference between a file being executable or not (by its owner). Everything else we leave for the user umask to decide.
2005-04-16[PATCH] Do not run useless show-diff on unmerged paths repeatedly.Libravatar Junio C Hamano1-0/+13
When run on unmerged dircache, show-diff compares the working file with each non-empty stage for that path. Two out of three times, this is not very helpful. This patch makes it report the unmergedness only once per each path and avoids running the actual diff. Upper layer SCMs like Cogito are expected to find out mode/SHA1 for each stage by using "show-files --stage" and run the diff itself. This would result in more sensible diffs. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-16[PATCH] show-diff style fix.Libravatar Junio C Hamano1-4/+3
This fixes some stylistic problems introduced by my previous set of patches. I'll be sending my last patch to show-diff next, which depends on this cleanup. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-16[PATCH] Rename confusing variable in show-diffLibravatar Junio C Hamano1-4/+4
The show-diff command uses a variable "new" but it is always used to point at the original data recorded in the dircache before the user started editing in the working file. Rename it to "old" to avoid confusion. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-16[PATCH] show-diff shell safetyLibravatar Junio C Hamano1-4/+60
The command line for running "diff" command is built without taking shell metacharacters into account. A malicious dircache entry "foo 2>bar" (yes, a filename with space) would result in creating a file called "bar" with the error message "diff: foo: No such file or directory" in it. This is not just a user screwing over himself. Such a dircache can be created as a result of a merge with tree from others. Here is a fix. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-16[PATCH] show-diff -z option for machine readable output.Libravatar Junio C Hamano1-9/+19
This patch adds the -z option to the show-diff command, primarily for use by scripts. The information emitted is similar to that of -q option, but in a more machine readable form. Records are terminated with NUL instead of LF, so that the scripts can deal with pathnames with embedded newlines. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-16[PATCH] Optionally tell show-diff to show only named filesLibravatar Junio C Hamano1-8/+30
SCMs have ways to say "I want diff only this particular file", or "I want diff files under this directory". This patch teaches show-diff to do something similar. Without command line arguments, it still examines everything in the dircache as before. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-16[PATCH] Un unoptimize ls-tree behaviourLibravatar Junio C Hamano1-26/+15
ls-tree unconditionally called read_sha1_file() for all paths even when not needed, which was a mistake introduced by me. Rectify this by first checking S_ISDIR(mode) and read the tree contents only when it is a tree and we are recursive. There is no need to read it in any other cases. The patch also removes the confusing comment that led to this incorrect implementation. Thanks to Peter Baudis for noticing this problem. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-16Add "--unmerged" flag to "show-files", which does what the name implies.Libravatar Linus Torvalds1-1/+10
The flag also implies "--stage", since unmerged file information doesn't make sense without the full output.
2005-04-16Remove "merge-tree.c"Libravatar Linus Torvalds2-149/+1
It's there in the history if somebody wants to resurrect it, but it seems to have been successfully superceded by the new and improved index-merge thing, where we do all merging entirely in the index.
2005-04-16When inserting a index entry of stage 0, remove all old unmerged entries.Libravatar Linus Torvalds1-5/+31
This allows you to actually tell git that you've resolved a conflict.
2005-04-16Make 'read-tree' do a few more of the trivial merge cases.Libravatar Linus Torvalds1-17/+53
This cuts down the work for the "real merge" to stuff where people might actually disagree on the algorithm. The trivial cases would seem to be totally independent of any policy.
2005-04-16[PATCH] Add --stage to show-files for new stage dircache.Libravatar Junio C Hamano2-9/+25
This adds --stage option to show-files command. It shows file-mode, SHA1, stage and pathname. Record separator follows the usual convention of -z option as before. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-16[PATCH] Byteorder fix for read-tree, new -m semantics version.Libravatar Junio C Hamano1-1/+1
The ce_namelen field has been renamed to ce_flags and split into the top 2-bit unused, next 2-bit stage number and the lowest 12-bit name-length, stored in the network byte order. A new macro create_ce_flags() is defined to synthesize this value from length and stage, but it forgets to turn the value into the network byte order. Here is a fix. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-15Make "read-tree" merge the trees it reads by giving them consecutive states.Libravatar Linus Torvalds1-6/+53
Normally you'd use state 0 for the "merged" state, and start out with state 1 being "origin", state 2 being "first tree" and state 3 being "second tree". Once all the index entries are back in state 0, we have a successful merge and can write the result tree back.
2005-04-15Make cache entry comparison take the new "state" flag into account.Libravatar Linus Torvalds2-6/+13
This is what allows us to have multiple states of the same file in the index, and what makes it always sort correctly.
2005-04-15write-tree: refuse to write out trees with unmerged index entries.Libravatar Linus Torvalds1-0/+18
Of course, we can't even generate such an index yet, but give me some time. This is a cunning plan. Let's see if it actually works. (I feel like Wile E Coyote, waiting for the big rock to fall).
2005-04-15Encode a few extra flags per index entry.Libravatar Linus Torvalds3-5/+9
This will allow us to have the same name in different "states" in the index at the same time. Which in turn seems to be a very simple way to merge.
2005-04-15Simplify show-diff cache entry name handling.Libravatar Linus Torvalds1-1/+1
The cache-entry names are all proper strings, no need to worry about their length.
2005-04-15[PATCH] Add '-z' to merge-tree.cLibravatar Junio C Hamano1-3/+20
This adds '-z' to merge-tree and changes its default line termination to LF to make it consistent with your other recent changes. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-15Make "diff-tree" have similar behaviour as "ls-tree" wrt line termination.Libravatar Linus Torvalds1-3/+10
Default to the human-readable '\n', but make the scriptable "-z" flag do the old '\0' behaviour.
2005-04-15[PATCH] Add "-q" option to show-diff.cLibravatar Junio C Hamano1-5/+12
This adds the '-q' option for show-diff.c to squelch complaints for missing files. It is handy if you want to run it in the merge temporary directory after running merge-trees with its minimum checkout mode, which is the default, because you would not find any files other than the ones that needs human validation after the merge there. It also fixes the argument parsing bug Paul Mackerras noticed in <16991.42305.118284.139777@cargo.ozlabs.ibm.com> but slightly differently. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-15[PATCH] Add -z option to show-filesLibravatar Junio C Hamano1-3/+9
This adds NUL-terminated output (-z) to show-files. This is necessary for merge-trees script to deal with filenames with embedded newlines. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-15Add "--cacheinfo" option to update-cache.Libravatar Linus Torvalds1-0/+35
This allows scripts to manually add entries to the cache explicitly. Need to do some way to remove them too, even if the path exists.
2005-04-15Convert the index file reading/writing to use network byte order.Libravatar Linus Torvalds7-60/+64
This allows using a git tree over NFS with different byte order, and makes it possible to just copy a fully populated repository and have the end result immediately usable (needing just a refresh to update the stat information).
2005-04-15[PATCH] Simplify date handling and make it more reliableLibravatar David Woodhouse2-6/+165
This make all dates be stores as seconds since UTC epoch, with the author's or committer's timezone as auxiliary data so that dates can be pretty-printed in the original timezone later if anyone cares. I left the date parsing in rev-tree.c for backward compatibility but it can be dropped when we change to base64 :) commit-tree now eats RFC2822 dates as AUTHOR_DATE because that's what you're going to want to feed it. Yes, glibc sucks and strptime is a pile of crap. We have to parse it ourselves.
2005-04-15[PATCH] ls-tree enhancementsLibravatar Junio C Hamano1-18/+90
This adds '-r' (recursive) option and '-z' (NUL terminated) option to ls-tree. I need it so that the merge-trees (formerly known as git-merge.perl) script does not need to create any temporary dircache while merging. It used to use show-files on a temporary dircache to get the list of files in the ancestor tree, and also used the dircache to store the result of its automerge. I probably still need it for the latter reason, but with this patch not for the former reason anymore. It is relative to bb95843a5a0f397270819462812735ee29796fb4 Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-14Add "merge-tree" helper program. Maybe it's retarded, maybe it's helpful.Libravatar Linus Torvalds2-1/+132
It only works one directory level at a time, so lookout..
2005-04-13Use common "revision.h" header for both fsck and rev-tree.Libravatar Linus Torvalds3-202/+121
It's really a very generic thing: the notion of one sha1 revision referring to another one. "fsck" uses it for all nodes, and "rev-tree" only tracks commit-node relationships, but the code was already the same - now we just make that explicit by moving it to a common header file.
2005-04-13Fix read-cache.c collission check logic.Libravatar Linus Torvalds1-11/+28
Not only did it test the #define the wrong way around, but it also leaked file descriptors and VM space. This should fix it.