Commit Graph

502 Commits

Author SHA1 Message Date
Junio C Hamano
71c1783c23 Merge branch 'lt/push' into next
* lt/push:
  builtin-push: make it official.
2006-05-01 23:41:57 -07:00
Junio C Hamano
54eb2d3ff9 builtin-push: make it official.
Remove the shell script version, and hardlink the git binary to it.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-01 23:40:37 -07:00
Junio C Hamano
a9fb582323 Merge branch 'jc/count' into next
* jc/count:
  builtin-count-objects: make it official.
2006-05-01 23:18:09 -07:00
Junio C Hamano
064c5bceee Merge branch 'jc/logs' into next
* jc/logs:
  builtin-log/whatchanged/show: make them official.
2006-05-01 23:16:35 -07:00
Junio C Hamano
7b763f7c65 builtin-log/whatchanged/show: make them official.
Remove the shell script version, and hardlink the git binary to
them.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-01 23:15:09 -07:00
Junio C Hamano
200f5dffc2 Merge branch 'jc/diff' into next
* jc/diff:
  builtin-diff: call it "git-diff", really.
2006-05-01 23:09:15 -07:00
Junio C Hamano
8ab99476ec builtin-diff: call it "git-diff", really.
Call it "git diff" not "git diffn", remove the shell script
version, and hardlink the git binary to it.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-01 23:07:28 -07:00
Junio C Hamano
468eb79ed4 builtin-count-objects: make it official.
Remove the shell-script version, make the hardlink from the git
binary, and update the documentation to describe a new option.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-01 23:06:06 -07:00
Junio C Hamano
afbe700e43 Merge branch 'jc/grep' into next
* jc/grep:
  built-in "git grep"
2006-05-01 01:54:02 -07:00
Junio C Hamano
5010cb5fcc built-in "git grep"
This attempts to set up built-in "git grep" to further reduce
our dependence on the shell, while at the same time optionally
allowing to run grep against object database.  You could do
funky things like these:

	git grep --cached -e pattern	;# grep from index
	git grep -e pattern master	;# or in a rev
	git grep -e pattern master next ;# or in multiple revs
	git grep -e pattern pu^@	;# even like this with an
					;# extension from another topic ;-)
	git grep -e pattern master..next ;# or even from rev ranges
	git grep -e pattern master~20:Documentation
					;# or an arbitrary tree
	git grep -e pattern next:git-commit.sh
        				;# or an arbitrary blob

Right now, it does not understand and/or obey many options grep
should accept, and the pattern must be given with -e option due
to the way the parameter parser is structured, both of which
obviously need to be fixed for usability.

But this is going in the right direction.  The shell script
version is one of the worst Portability offender in the git
barebone Porcelainish; it uses xargs -0 to pass paths around and
shell arrays to sift flags and parameters.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-05-01 01:26:46 -07:00
Junio C Hamano
6b401891a2 Merge branch 'lt/push' into next
* lt/push:
  git builtin "push"
  git-format-patch: Use rfc2822 compliant date.
2006-04-30 01:00:55 -07:00
Linus Torvalds
755225de6c git builtin "push"
This adds a builtin "push" command, which is largely just a C'ification of
the "git-push.sh" script.

Now, the reason I did it as a built-in is partly because it's yet another
step on relying less on shell, but it's actually mostly because I've
wanted to be able to push to _multiple_ repositories, and the most obvious
and simplest interface for that would seem be to just have a "remotes"
file that has multiple URL entries.

(For "pull", having multiple entries should either just select the first
one, or you could fall back on the others on failure - your choice).

And quite frankly, it just became too damn messy to do that in shell.
Besides, we actually have a fair amount of infrastructure in C, so it just
wasn't that hard to do.

Of course, this is almost totally untested. It probably doesn't work for
anything but the one trial I threw at it. "Simple" doesn't necessarily
mean "obviously correct".

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-04-30 00:59:18 -07:00
Junio C Hamano
a0c5081a78 Merge branch 'jc/diff' into next
* jc/diff:
  built-in diff: assorted updates.
  built-in diff.
2006-04-29 01:33:16 -07:00
Junio C Hamano
65056021f2 built-in diff.
This starts to replace the shell script version of "git diff".

Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-04-28 23:20:52 -07:00
Junio C Hamano
4623d43de5 Merge branch 'np/delta' into next
* np/delta:
  replace adler32 with Rabin's polynomial in diff-delta
2006-04-28 22:42:41 -07:00
Nicolas Pitre
3dc5a9e4cd replace adler32 with Rabin's polynomial in diff-delta
This brings another small repacking speedup for sensibly the same pack
size.  On the Linux kernel repo, git-repack -a -f is 3.7% faster for a
0.4% larger pack.

Credits to Geert Bosch who brought the Rabin's polynomial idea to my
attention.

This also eliminate the issue of adler32() reading past the data buffer,
as noticed by Johannes Schindelin.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-04-28 22:41:31 -07:00
Junio C Hamano
ac92095ff2 Merge branch 'jc/count' into next
* jc/count:
  built-in count-objects.
  pack-objects: update size heuristucs.
  verify-pack: check integrity in a saner order.
2006-04-27 21:38:43 -07:00
Junio C Hamano
c74320872b built-in count-objects.
Also it learned to do -v (verbose) to report:

	- number of loose objects
	- disk occupied by loose objects
	- number of objects in local packs
	- number of loose objects that are also in pack
	- unrecognised garbage in .git/objects/??/.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-04-27 21:35:27 -07:00
Junio C Hamano
b8c59e6ad3 Retire rabinpoly fingerprinting code
For now let's retire this and reintroduce it as part of the updated
pack-objects series from Geert when it is ready.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-04-27 12:48:26 -07:00
Junio C Hamano
7608d4bf97 Merge branch 'jc/cache-tree' into next
* jc/cache-tree:
  commit-tree: allow generic object name for the tree as well.
  Makefile: remove and create xdiff library from scratch.
  t0000-basic: Add ls-tree recursive test back.
2006-04-26 03:39:01 -07:00
Junio C Hamano
b8ed7f0f40 Merge branch 'master' into jc/cache-tree
* master:
  commit-tree: allow generic object name for the tree as well.
  Makefile: remove and create xdiff library from scratch.
  t0000-basic: Add ls-tree recursive test back.
  Libified diff-index: backward compatibility fix.
  Libify diff-index.
  Libify diff-files.
  Makefile: remove and create libgit.a from scratch.
  Document the configuration file
  Document git-var -l listing also configuration variables
  rev-parse: better error message for ambiguous arguments
  make update-index --chmod work with multiple files and --stdin
  socksetup: don't return on set_reuse_addr() error
  Fix "git show --stat"
  git-update-index --unresolve
  Add git-unresolve <paths>...
  Add colordiff for git to contrib/colordiff.
  gitk: Let git-rev-list do the argument list parsing
2006-04-26 03:29:09 -07:00
Junio C Hamano
2d86d2c6fc Makefile: remove and create xdiff library from scratch.
... in the same spirit as 71459c193d.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-04-26 03:12:58 -07:00
Junio C Hamano
9849efb321 Merge branch 'jc/diffstat' into next
* jc/diffstat:
  diff --stat: show complete rewrites consistently.
  Makefile: remove and create libgit.a from scratch.
2006-04-25 23:50:48 -07:00
Junio C Hamano
e9b5b75ca8 Merge branch 'jc/diff'
* jc/diff:
  Libified diff-index: backward compatibility fix.
  Libify diff-index.
  Libify diff-files.
2006-04-25 23:12:21 -07:00
Junio C Hamano
71459c193d Makefile: remove and create libgit.a from scratch.
Foolishly I renamed diff.o around which caused an old diff.o
taken out of libgit.a and got linked into resulting binary and
exhibited mysterious breakage for many people.  This borrows
from the kernel Makefile (scripts/Makefile.build) to first remove
the target and then recreate.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-04-25 23:11:17 -07:00
Junio C Hamano
dc844aaad8 Merge branch 'jc/cache-tree' into next
* jc/cache-tree:
  index: make the index file format extensible.
  cache-tree: protect against "git prune".
  Add test-dump-cache-tree
2006-04-24 21:28:07 -07:00
Junio C Hamano
5b5e4d6487 Merge part of 'jc/cache-tree' 2006-04-24 00:33:28 -07:00
Junio C Hamano
17448209f5 Add test-dump-cache-tree
This was useful in diagnosing the corrupt index.aux format
problem.  But do not bother building or installing it by
default.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-04-24 00:26:31 -07:00
Junio C Hamano
749864627c Add cache-tree.
The cache_tree data structure is to cache tree object names that
would result from the current index file.

The idea is to have an optional file to record each tree object
name that corresponds to a directory path in the cache when we
run write_cache(), and read it back when we run read_cache().
During various index manupulations, we selectively invalidate
the parts so that the next write-tree can bypass regenerating
tree objects for unchanged parts of the directory hierarchy.

We could perhaps make the cache-tree data an optional part of
the index file, but that would involve the index format updates,
so unless we need it for performance reasons, the current plan
is to use a separate file, $GIT_DIR/index.aux to store this
information and link it with the index file with the checksum
that is already used for index file integrity check.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-04-23 20:18:16 -07:00
Junio C Hamano
0bc6c14058 Merge branch 'jc/diff' into next
* jc/diff:
  Libify diff-index.
  Libify diff-files.
2006-04-22 03:07:08 -07:00
Junio C Hamano
6973dcaee7 Libify diff-files.
This is the first installment to libify diff brothers.

The updated diff-files uses revision.c::setup_revisions()
infrastructure to parse its command line arguments, which means
the pathname arguments are checked more strictly than before.
The tests are adjusted to separate possibly missing paths from
the rest of arguments with double-dashes, to show the kosher
way.

As Linus pointed out, renaming diff.c to diff-lib.c was simply
stupid, so I am renaming it back.  The new diff-lib.c is to
contain pieces extracted from diff brothers.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-04-22 02:37:45 -07:00
Junio C Hamano
076d1d6adc Merge branch 'jc/color' into next
* jc/color:
  Add colordiff for git to contrib/colordiff.
  Makefile: dependency for builtin-help.o
2006-04-21 22:25:16 -07:00
Junio C Hamano
08df61713c Makefile: dependency for builtin-help.o
builtin-help.c wants to include common-cmds.h which is a
generated file.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-04-21 21:56:31 -07:00
Junio C Hamano
6082c4433b Merge branch 'jc/fmt-patch' into next
* jc/fmt-patch:
  Split up builtin commands into separate files from git.c
  git-log produces no output
2006-04-21 13:32:58 -07:00
Linus Torvalds
70827b15bf Split up builtin commands into separate files from git.c
Right now it split it into "builtin-log.c" for log-related commands
("log", "show" and "whatchanged"), and "builtin-help.c" for the
informational commands (usage printing and "help" and "version").

This just makes things easier to read, I find.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-04-21 13:14:41 -07:00
Junio C Hamano
f31613d45a Merge branch 'jc/unresolve' into next
* jc/unresolve:
  git-update-index --unresolve
2006-04-19 23:52:30 -07:00
Junio C Hamano
2bd452d3b9 git-update-index --unresolve
Retire git-unresolve and make it into "git-update-index --unresolve".
It processes all paths that follow.

During a merge, you would mark a path that is dealt with with:

	$ git update-index hello

and you would "undo" it with:

	$ git update-index --unresolve hello

Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-04-19 23:52:05 -07:00
Junio C Hamano
60571f75ab Merge branch 'jc/unresolve' into next
* jc/unresolve:
  Add git-unresolve <paths>...
  get_tree_entry(): make it available from tree-walk
  sha1_name.c: no need to include diff.h; tree-walk.h will do.
  sha1_name.c: prepare to make get_tree_entry() reusable from others.
  pre-commit hook: complain about conflict markers.
  git-merge: a bit more readable user guidance.
  diff: move diff.c to diff-lib.c to make room.
  git log: don't do merge diffs by default
  Allow "git repack" users to specify repacking window/depth
2006-04-19 16:12:57 -07:00
Junio C Hamano
ec167793d8 Add git-unresolve <paths>...
This is an attempt to address the issue raised on #git channel
recently by Carl Worth.

After a conflicted automerge, "git diff" shows a combined diff
to give you how the tentative automerge result differs from
what came from each branch.  During a complex merge, it is
tempting to be able to resolve a few paths at a time, mark
them "I've dealt with them" with git-update-index to unclutter
the next "git diff" output, and keep going.  However, when the
final result does not compile or otherwise found to be a
mismerge, the workflow to fix the mismerged paths suddenly
changes to "git diff HEAD -- path" (to get a diff from our
HEAD before merging) and "git diff MERGE_HEAD -- path" (to get
a diff from theirs), and it cannot show the combined anymore.

With git-unresolve <paths>..., the versions from our branch and
their branch for specified blobs are placed in stage #2 and
stage #3, without touching the working tree files.  This gives
you the combined diff back for easier review, along with
"diff --ours" and "diff --theirs".

One thing it does not do is to place the base in stage #1; this
means "diff --base" would behave differently between the run
immediately after a conflicted three-way merge, and the run
after an update-index by mistake followed by a git-unresolve.

We could theoretically run merge-base between HEAD and
MERGE_HEAD to find which tree to place in stage #1, but
reviewing "diff --base" is not that useful so....

Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-04-19 16:12:41 -07:00
Junio C Hamano
ba580aeafb diff: move diff.c to diff-lib.c to make room.
Now I am not doing any real "git-diff in C" yet, but this would
help before doing so.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-04-19 15:38:14 -07:00
Junio C Hamano
d3d9681a0f Merge branch 'master' into next
* master:
  GIT 1.3.0
  Add git-annotate(1) and git-blame(1)
  diff --stat: make sure to set recursive.
  git-svnimport symlink support
2006-04-18 13:52:46 -07:00
Jonas Fonseca
8f2b72a936 Add git-annotate(1) and git-blame(1)
[jc: with entries in git.txt]

Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-04-18 12:06:55 -07:00
Junio C Hamano
9893e3eb92 Merge branch 'jc/boundary' into next
* jc/boundary:
  rev-list --boundary: show boundary commits even when limited otherwise.
  Makefile fixups.
  gitk: Fix bug caused by missing commitlisted elements
2006-04-16 22:07:28 -07:00
A Large Angry SCM
e6bfaf3e33 Makefile fixups.
Signed-off-by: A Large Angry SCM <gitzilla@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-04-16 20:42:37 -07:00
Junio C Hamano
fd2bbdd238 Clean-up Geert's similarity fingerprint code.
This splits Geert's similarity fingerprint code into main
program and fingerprinting function.  The next step would be to
try using this in pack-objects.c::try_delta() -- which would be
a good evaluation.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-04-15 02:11:52 -07:00
Junio C Hamano
8c989ec528 Makefile: $(MAKE) check-docs
This target lists undocumented commands, and/or whose document
is not referenced from the main git documentation.

For now, there are some exceptions I added primarily because I
lack the energy to document them myself:

 - merge backends (we should really document them)
 - ssh-push/ssh-pull (does anybody still use them?)
 - annotate and blame (maybe after one of them eats the other ;-)

Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-04-13 00:21:47 -07:00
Junio C Hamano
b5b1442ac3 Merge branch 'ds/index' into next
* ds/index:
  Replace index() with strchr().
  Solaris 9 also wants our own unsetenv/setenv.
  Retire git-log.sh (take #3)
2006-04-11 11:52:36 -07:00
Dennis Stosberg
40d88d4fa3 Solaris 9 also wants our own unsetenv/setenv.
[jc: the original had "index() is evil" but that should be a
separate patch.]
2006-04-11 11:42:26 -07:00
Junio C Hamano
f94fbbee90 Retire git-log.sh (take #3)
Do not install built-in commands as separate files -- use
hardlinks instead.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-04-11 11:29:36 -07:00
Junio C Hamano
6b32ee2381 Merge branch 'jc/withraw' into next
* jc/withraw:
  diff-* --patch-with-raw
  Retire git-log.sh (take#2)
  Retire git-log.sh
  Retire diffcore-pathspec.
  Improve the git-diff-tree -c/-cc documentation
2006-04-10 19:44:35 -07:00