gitweb.git
Make git-send-email aware of Cc: lines.J. Bruce Fields Mon, 19 Mar 2007 01:37:53 +0000 (21:37 -0400)

Make git-send-email aware of Cc: lines.

In the Linux kernel, for example, it's common to include Cc: lines
for cases when you want to remember to cc someone on a patch without
necessarily claiming they signed off on it. Make git-send-email
aware of these.

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
Signed-off-by: Junio C Hamano <junkio@cox.net>

mergetool: print an appropriate warning if merge.tool... Theodore Ts'o Mon, 19 Mar 2007 02:30:10 +0000 (22:30 -0400)

mergetool: print an appropriate warning if merge.tool is unknown

Also add support for vimdiff

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>

mergetool: Add support for vimdiff.James Bowes Mon, 19 Mar 2007 02:11:54 +0000 (22:11 -0400)

mergetool: Add support for vimdiff.

Signed-off-by: James Bowes <jbowes@dangerouslyinc.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>

Update main git.html page to point at 1.5.0.5 documentationJunio C Hamano Sun, 18 Mar 2007 22:58:07 +0000 (15:58 -0700)

Update main git.html page to point at 1.5.0.5 documentation

Signed-off-by: Junio C Hamano <junkio@cox.net>

Merge branch 'ar/diff'Junio C Hamano Sun, 18 Mar 2007 22:48:06 +0000 (15:48 -0700)

Merge branch 'ar/diff'

* ar/diff:
Add tests for --quiet option of diff programs
try-to-simplify-commit: use diff-tree --quiet machinery.
revision.c: explain what tree_difference does
Teach --quiet to diff backends.
diff --quiet
Remove unused diffcore_std_no_resolve
Allow git-diff exit with codes similar to diff(1)

Avoid unnecessary strlen() callsLinus Torvalds Sun, 18 Mar 2007 03:06:24 +0000 (20:06 -0700)

Avoid unnecessary strlen() calls

This is a micro-optimization that grew out of the mailing list discussion
about "strlen()" showing up in profiles.

We used to pass regular C strings around to the low-level tree walking
routines, and while this worked fine, it meant that we needed to call
strlen() on strings that the caller always actually knew the size of
anyway.

So pass the length of the string down wih the string, and avoid
unnecessary calls to strlen(). Also, when extracting a pathname from a
tree entry, use "tree_entry_len()" instead of strlen(), since the length
of the pathname is directly calculable from the decoded tree entry itself
without having to actually do another strlen().

This shaves off another ~5-10% from some loads that are very tree
intensive (notably doing commit filtering by a pathspec).

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>"
Signed-off-by: Junio C Hamano <junkio@cox.net>

Reuse cached data out of delta base cache.Nicolas Pitre Sun, 18 Mar 2007 01:13:57 +0000 (21:13 -0400)

Reuse cached data out of delta base cache.

A malloc() + memcpy() will always be faster than mmap() +
malloc() + inflate(). If the data is already there it is
certainly better to copy it straight away.

With this patch below I can do 'git log drivers/scsi/ >
/dev/null' about 7% faster. I bet it might be even more on
those platforms with bad mmap() support.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Implement a simple delta_base cacheLinus Torvalds Sat, 17 Mar 2007 19:44:06 +0000 (12:44 -0700)

Implement a simple delta_base cache

This trivial 256-entry delta_base cache improves performance for some
loads by a factor of 2.5 or so.

Instead of always re-generating the delta bases (possibly over and over
and over again), just cache the last few ones. They often can get re-used.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Make trivial wrapper functions around delta base genera... Linus Torvalds Sat, 17 Mar 2007 19:42:15 +0000 (12:42 -0700)

Make trivial wrapper functions around delta base generation and freeing

This doesn't change any code, it just creates a point for where we'd
actually do the caching of delta bases that have been generated.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Merge 1.5.0.5 in from 'maint'Junio C Hamano Sun, 18 Mar 2007 22:36:44 +0000 (15:36 -0700)

Merge 1.5.0.5 in from 'maint'

GIT 1.5.0.5 v1.5.0.5Junio C Hamano Sun, 18 Mar 2007 21:40:35 +0000 (14:40 -0700)

GIT 1.5.0.5

Signed-off-by: Junio C Hamano <junkio@cox.net>

Merge branch 'maint'Junio C Hamano Sat, 17 Mar 2007 07:33:17 +0000 (00:33 -0700)

Merge branch 'maint'

* maint:
git-merge: finish when git-read-tree fails

[PATCH] clean up pack index handling a bitNicolas Pitre Fri, 16 Mar 2007 20:42:50 +0000 (16:42 -0400)

[PATCH] clean up pack index handling a bit

Especially with the new index format to come, it is more appropriate
to encapsulate more into check_packed_git_idx() and assume less of the
index format in struct packed_git.

To that effect, the index_base is renamed to index_data with void * type
so it is not used directly but other pointers initialized with it. This
allows for a couple pointer cast removal, as well as providing a better
generic name to grep for when adding support for new index versions or
formats.

And index_data is declared const too while at it.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

[PATCH] add test for OFS_DELTA objectsNicolas Pitre Fri, 16 Mar 2007 17:50:18 +0000 (13:50 -0400)

[PATCH] add test for OFS_DELTA objects

Make sure pack-objects with --delta-base-offset works fine, and that
it actually produces smaller packs as expected.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

[PATCH] fix t5300-pack-object.shNicolas Pitre Fri, 16 Mar 2007 17:37:42 +0000 (13:37 -0400)

[PATCH] fix t5300-pack-object.sh

The 'use packed deltified objects' test was flawed as it failed to
remove the pack and index from the previous test, effectively preventing
the desired pack from being exercised as objects could be found in that
other pack instead.

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

[PATCH] local-fetch.c: some error printing cleanupNicolas Pitre Fri, 16 Mar 2007 17:20:19 +0000 (13:20 -0400)

[PATCH] local-fetch.c: some error printing cleanup

Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

applymbox: brown paper bag fix.Junio C Hamano Sat, 17 Mar 2007 04:22:05 +0000 (21:22 -0700)

applymbox: brown paper bag fix.

An earlier patch 87ab7992 broke applymbox by blindly copying piece
from git-am, causing a harmless but annoying series of error messages.

Signed-off-by: Junio C Hamano <junkio@cox.net>

git-merge: finish when git-read-tree failsSanti Béjar Fri, 16 Mar 2007 10:46:09 +0000 (11:46 +0100)

git-merge: finish when git-read-tree fails

The message formating (commit v1.5.0.3-28-gbe242d5) broke the && chain.

Noticed by Dmitry Torokhov.

Signed-off-by: Santi Béjar <sbejar@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Add tests for --quiet option of diff programsAlex Riesen Wed, 14 Mar 2007 22:57:23 +0000 (23:57 +0100)

Add tests for --quiet option of diff programs

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>

use xstrdup pleaseShawn O. Pearce Fri, 16 Mar 2007 01:02:51 +0000 (21:02 -0400)

use xstrdup please

We generally prefer xstrdup to just plain strdup.
Make it so.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

git-fetch, git-branch: Support local --track via a... Paolo Bonzini Thu, 15 Mar 2007 08:23:20 +0000 (09:23 +0100)

git-fetch, git-branch: Support local --track via a special remote '.'

This patch adds support for a dummy remote '.' to avoid having
to declare a fake remote like

[remote "local"]
url = .
fetch = refs/heads/*:refs/heads/*

Such a builtin remote simplifies the operation of "git-fetch",
which will populate FETCH_HEAD but will not pretend that two
repositories are in use, will not create a thin pack, and will
not perform any useless remapping of names. The speed
improvement is around 20%, and it should improve more if
"git-fetch" is converted to a builtin.

To this end, git-parse-remote is grown with a new kind of
remote, 'builtin'. In git-fetch.sh, we treat the builtin remote
specially in that it needs no pack/store operations. In fact,
doing git-fetch on a builtin remote will simply populate
FETCH_HEAD appropriately.

The patch also improves of the --track/--no-track support,
extending it so that branch.<name>.remote items referring '.'
can be created. Finally, it fixes a typo in git-checkout.sh.

Signed-off-by: Paolo Bonzini <bonzini@gnu.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

try-to-simplify-commit: use diff-tree --quiet machinery.Junio C Hamano Wed, 14 Mar 2007 20:18:15 +0000 (13:18 -0700)

try-to-simplify-commit: use diff-tree --quiet machinery.

This uses diff-tree --quiet machinery to terminate the internal
diff-tree between a commit and its parents via revs.pruning (not
revs.diffopt) as soon as we find enough about the tree change.

With respect to the optionally given pathspec, we are interested
if the tree of commit is identical to the parent's, only adds
new paths to the parent's, or there are other differences. As
soon as we find out that there is one such other kind of
difference, we do not have to compare the rest of the tree.

Because we do not call standard diff_addremove/diff_change, we
instruct the diff-tree machinery to stop early by setting
has_changes when we say we found the trees to be different.

Signed-off-by: Junio C Hamano <junkio@cox.net>

revision.c: explain what tree_difference doesJunio C Hamano Wed, 14 Mar 2007 20:12:18 +0000 (13:12 -0700)

revision.c: explain what tree_difference does

This explains how tree_difference variable is used, and updates two
places where the code knows symbolic constant REV_TREE_SAME is 0.

Signed-off-by: Junio C Hamano <junkio@cox.net>

Teach --quiet to diff backends.Junio C Hamano Wed, 14 Mar 2007 18:12:51 +0000 (11:12 -0700)

Teach --quiet to diff backends.

This teaches git-diff-files, git-diff-index and git-diff-tree
backends to exit early under --quiet option.

Signed-off-by: Junio C Hamano <junkio@cox.net>

diff --quietJunio C Hamano Wed, 14 Mar 2007 18:12:13 +0000 (11:12 -0700)

diff --quiet

This adds the command line option 'quiet' to tell 'git diff-*'
that we are not interested in the actual diff contents but only
want to know if there is any change. This option automatically
turns --exit-code on, and turns off output formatting, as it
does not make much sense to show the first hit we happened to
have found.

The --quiet option is silently turned off (but --exit-code is
still in effect, so is silent output) if postprocessing filters
such as pickaxe and diff-filter are used. For all practical
purposes I do not think of a reason to want to use these filters
and not viewing the diff output.

The backends have not been taught about the option with this patch.
That is a topic for later rounds.

Signed-off-by: Junio C Hamano <junkio@cox.net>

Remove unused diffcore_std_no_resolveJunio C Hamano Wed, 14 Mar 2007 17:36:42 +0000 (10:36 -0700)

Remove unused diffcore_std_no_resolve

This was only used by diff-tree-helper program, whose purpose
was to translate a raw diff to a patch.

Signed-off-by: Junio C Hamano <junkio@cox.net>

Allow git-diff exit with codes similar to diff(1)Alex Riesen Wed, 14 Mar 2007 00:17:04 +0000 (01:17 +0100)

Allow git-diff exit with codes similar to diff(1)

This introduces a new command-line option: --exit-code. The diff
programs will return 1 for differences, return 0 for equality, and
something else for errors.

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Merge GIT 1.5.0.4Junio C Hamano Wed, 14 Mar 2007 22:59:04 +0000 (15:59 -0700)

Merge GIT 1.5.0.4

GIT 1.5.0.4 v1.5.0.4Junio C Hamano Wed, 14 Mar 2007 22:56:49 +0000 (15:56 -0700)

GIT 1.5.0.4

Signed-off-by: Junio C Hamano <junkio@cox.net>

Clarify doc for git-config --unset-all.Yann Dirson Wed, 14 Mar 2007 21:08:41 +0000 (22:08 +0100)

Clarify doc for git-config --unset-all.

Previous formulation could make it appear as removing all lines
matching a regexp (at least, I was looking for such a flag, and
confused this flag for what I was looking for).

Signed-off-by: Yann Dirson <ydirson@altern.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

git-checkout: fix "eval" used for merge labelling.Junio C Hamano Wed, 14 Mar 2007 16:48:13 +0000 (09:48 -0700)

git-checkout: fix "eval" used for merge labelling.

The symbolic notation of the fork point can contain whitespaces (e.g.
"git checkout -m 'HEAD@{9 hours ago}'"). Quote strings properly
when using eval to prepare GITHEAD_$new

Signed-off-by: Junio C Hamano <junkio@cox.net>

update-hook: fix incorrect use of git-describe and... Andy Parkins Wed, 14 Mar 2007 14:25:52 +0000 (14:25 +0000)

update-hook: fix incorrect use of git-describe and sed for finding previous tag

Previously git-describe would output lines of the form
v1.1.1-gf509d56
The update hook found the dash and stripped it off using
sed 's/-g.*//'
The remainder was then used as the previous tag name.

However, git-describe has changed format. The output is now of the form
v1.1.1-23-gf509d56
The above sed fragment doesn't strip the middle "-23", and so the
previous tag name used would be "v1.1.1-23". This is incorrect.

Since the hook script was written, git-describe now gained support for
"--abbrev=0", which it uses as a special flag to tell it not to output
anything other than the nearest tag name. This patch fixes the problem,
and prevents any future recurrence by using this new flag rather than
sed to find the previous tag.

Signed-off-by: Andy Parkins <andyparkins@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Merge branch 'jc/repack'Junio C Hamano Wed, 14 Mar 2007 09:08:48 +0000 (02:08 -0700)

Merge branch 'jc/repack'

* jc/repack:
prepare_packed_git(): sort packs by age and localness.

Merge branch 'jc/fetch'Junio C Hamano Wed, 14 Mar 2007 08:40:19 +0000 (01:40 -0700)

Merge branch 'jc/fetch'

* jc/fetch:
.gitignore: add git-fetch--tool
builtin-fetch--tool: fix reflog notes.
git-fetch: retire update-local-ref which is not used anymore.
builtin-fetch--tool: make sure not to overstep ls-remote-result buffer.
fetch--tool: fix uninitialized buffer when reading from stdin
builtin-fetch--tool: adjust to updated sha1_object_info().
git-fetch--tool takes flags before the subcommand.
Use stdin reflist passing in git-fetch.sh
Use stdin reflist passing in parse-remote
Allow fetch--tool to read from stdin
git-fetch: rewrite expand_ref_wildcard in C
git-fetch: rewrite another shell loop in C
git-fetch: move more code into C.
git-fetch--tool: start rewriting parts of git-fetch in C.
git-fetch: split fetch_main into fetch_dumb and fetch_native

Merge branch 'dz/mailinfo'Junio C Hamano Wed, 14 Mar 2007 08:39:19 +0000 (01:39 -0700)

Merge branch 'dz/mailinfo'

* dz/mailinfo:
Add a couple more test cases to the suite.
restrict the patch filtering
builtin-mailinfo.c infrastrcture changes

Merge branch 'jb/per-user-exclude'Junio C Hamano Wed, 14 Mar 2007 08:38:57 +0000 (01:38 -0700)

Merge branch 'jb/per-user-exclude'

* jb/per-user-exclude:
add: Support specifying an excludes file with a configuration variable

Merge branch 'maint'Junio C Hamano Wed, 14 Mar 2007 08:38:39 +0000 (01:38 -0700)

Merge branch 'maint'

* maint:
cvsserver: asciidoc formatting changes

Merge branch 'pb/branch-track'Junio C Hamano Wed, 14 Mar 2007 08:38:28 +0000 (01:38 -0700)

Merge branch 'pb/branch-track'

* pb/branch-track:
Fix broken create_branch() in builtin-branch.
git-branch, git-checkout: autosetup for remote branch tracking

git-grep: don't use sscanfJim Meyering Mon, 12 Mar 2007 12:11:29 +0000 (13:11 +0100)

git-grep: don't use sscanf

If you use scanf or sscanf to parse integers, your code probably
accepts bogus inputs. For example, builtin-grep (aka git-grep) uses
sscanf(scan, "%u", &num) to parse the integer argument to -A, -B, -C.
Currently, "-C 1,000" and "-C 4294967297" are both treated just like
"-C 1":

$ git-grep -h -C 4294967297 juggle
out and you may find it easier to switch back and forth if you
juggle multiple lines of development simultaneously. Of
course, you will pay the price of more disk usage to hold

The obvious fix is to use strtoul instead. But using a bare strtoul is
too messy, at least when done properly, so I've added a wrapper function.

The new function in the patch below belongs elsewhere if it would be
useful in replacing any of the four remaining uses of sscanf.

One final note: With this change, I get a slightly different
diagnostic depending on the context size:

$ ./git-grep -h -C 4294967296 juggle
fatal: 4294967296: invalid context length argument
[Exit 128]
$ ./git-grep -h -C 4294967295 juggle
grep: 4294967295: invalid context length argument

[Exit 1]

A common convention that makes it easy to identify the source
of a diagnostic is to include the program name before the first ":".
Whether that should be "git" or "git-grep" is another question.
Using "grep" or "fatal" is misleading.

Signed-off-by: Jim Meyering <jim@meyering.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Do not output "GEN " when generating perl.makJohannes Schindelin Sun, 11 Mar 2007 13:19:07 +0000 (14:19 +0100)

Do not output "GEN " when generating perl.mak

This fixes the same issue as 8bef6204, which became an issue again
after 31d0399c.

Besides, it is not really helpful to print just "GEN " (_without_
"perl.mak").

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>

shortlog: prompt when reading from terminal by mistakeJunio C Hamano Thu, 8 Mar 2007 10:12:06 +0000 (02:12 -0800)

shortlog: prompt when reading from terminal by mistake

I was trying to see who have been active recently to find GSoC
mentor candidates by running:

$ git shortlog -s -n --since=4.months | head -n 20

After waiting for about 20 seconds, I started getting worried,
thinking that the recent revision traversal updates might have
had an unintended side effect.

Not so. "git shortlog" acts as a filter when no revs are given,
unlike "git log" which defaults to HEAD. It was reading from
its standard input.

Signed-off-by: Junio C Hamano <junkio@cox.net>

Documentation: add git-mergetool to the command list.Junio C Hamano Wed, 14 Mar 2007 08:29:26 +0000 (01:29 -0700)

Documentation: add git-mergetool to the command list.

Signed-off-by: Junio C Hamano <junkio@cox.net>

Merge branch 'master' of git://repo.or.cz/git/mergetoolJunio C Hamano Wed, 14 Mar 2007 08:13:39 +0000 (01:13 -0700)

Merge branch 'master' of git://repo.or.cz/git/mergetool

* 'master' of git://repo.or.cz/git/mergetool:
Add git-mergetool to run an appropriate merge conflict resolution program

git-svn: add -l/--local command to "git svn rebase"Eric Wong Tue, 13 Mar 2007 18:40:36 +0000 (11:40 -0700)

git-svn: add -l/--local command to "git svn rebase"

This avoids fetching new revisions remotely, and is usefuly
versus plain "git rebase" because the user does not have to
specify which remote head to rebase against.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>

cvsserver: asciidoc formatting changesFrank Lichtenheld Tue, 13 Mar 2007 17:24:26 +0000 (18:24 +0100)

cvsserver: asciidoc formatting changes

Format some lists really as lists. Improves both html and man
output.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Add git-mergetool to run an appropriate merge conflict... Theodore Ts'o Tue, 6 Mar 2007 05:05:16 +0000 (00:05 -0500)

Add git-mergetool to run an appropriate merge conflict resolution program

The git-mergetool program can be used to automatically run an appropriate
merge resolution program to resolve merge conflicts. It will automatically
run one of kdiff3, tkdiff, meld, xxdiff, or emacs emerge programs.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>

Add a couple more test cases to the suite.Don Zickus Mon, 12 Mar 2007 19:52:07 +0000 (15:52 -0400)

Add a couple more test cases to the suite.

They handle cases where there is no attached patch.

Signed-off-by: Don Zickus <dzickus@redhat.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

restrict the patch filteringDon Zickus Mon, 12 Mar 2007 19:52:06 +0000 (15:52 -0400)

restrict the patch filtering

I have come across many emails that use long strings of '-'s as separators
for ideas. This patch below limits the separator to only 3 '-', with the
intent that long string of '-'s will stay in the commit msg and not in the
patch file.

Signed-off-by: Don Zickus <dzickus@redhat.com>
Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

builtin-mailinfo.c infrastrcture changesDon Zickus Mon, 12 Mar 2007 19:52:04 +0000 (15:52 -0400)

builtin-mailinfo.c infrastrcture changes

I am working on a project that required parsing through regular
mboxes that didn't necessarily have patches embedded in them. I
started by creating my own modified copy of git-am and working
from there. Very quickly, I noticed git-mailinfo wasn't able to
handle a big chunk of my email.

After hacking up numerous solutions and running into more
limitations, I decided it was just easier to rewrite a big chunk
of it. The following patch has a bunch of fixes and features
that I needed in order for me do what I wanted.

Note: I'm didn't follow any email rfc papers but I don't think
any of the changes I did required much knowledge (besides the
boundary stuff).

List of major changes/fixes:
- can't create empty patch files fix
- empty patch files don't fail, this failure will come inside git-am
- multipart boundaries are now handled
- only output inbody headers if a patch exists otherwise assume those
headers are part of the reply and instead output the original headers
- decode and filter base64 patches correctly
- various other accidental fixes

I believe I didn't break any existing functionality or
compatibility (other than what I describe above, which is really
only the empty patch file).

I tested this through various mailing list archives and
everything seemed to parse correctly (a couple thousand emails).

[jc: squashed in another patch from Don's five patch series to
fix the test case, as this patch exposes the bug in the test.]

Signed-off-by: Don Zickus <dzickus@redhat.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Merge branch 'master' of git://repo.or.cz/git-guiJunio C Hamano Tue, 13 Mar 2007 06:14:07 +0000 (23:14 -0700)

Merge branch 'master' of git://repo.or.cz/git-gui

* 'master' of git://repo.or.cz/git-gui:
git-gui: Support of "make -s" in: do not output anything of the build itself

Merge branch 'maint'Junio C Hamano Tue, 13 Mar 2007 06:13:01 +0000 (23:13 -0700)

Merge branch 'maint'

* maint:
Don't package the git-gui credits file anymore
git-gui: Allow 'git gui version' outside of a repository
git-gui: Revert "git-gui: Display all authors of git-gui."
git-gui: Revert "Don't modify CREDITS-FILE if it hasn't changed."
git-gui: Allow committing empty merges

Merge branch 'master' of git://repo.or.cz/git/fastimportJunio C Hamano Tue, 13 Mar 2007 06:10:23 +0000 (23:10 -0700)

Merge branch 'master' of git://repo.or.cz/git/fastimport

* 'master' of git://repo.or.cz/git/fastimport:
Remove unnecessary casts from fast-import
New fast-import test case for valid tree sorting
fast-import: grow tree storage more aggressively

Merge branch 'maint' of git://repo.or.cz/git/fastimport... Junio C Hamano Tue, 13 Mar 2007 06:08:27 +0000 (23:08 -0700)

Merge branch 'maint' of git://repo.or.cz/git/fastimport into maint

* 'maint' of git://repo.or.cz/git/fastimport:
fast-import: grow tree storage more aggressively

Fix t5510-fetch's use of sedShawn O. Pearce Mon, 12 Mar 2007 22:59:16 +0000 (18:59 -0400)

Fix t5510-fetch's use of sed

POSIX says sed may add a trailing LF if there isn't already
one there. We shouldn't rely on it not adding that LF, as
some systems (Mac OS X for example) will add it.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Simplify closing two fds at once in run-command.cShawn O. Pearce Mon, 12 Mar 2007 18:37:28 +0000 (14:37 -0400)

Simplify closing two fds at once in run-command.c

I started hacking on a change to add stdout redirection support to
the run_command family, but found I was using a lot of close calls
on two pipes in an array (such as for pipe). So I'm doing a tiny
bit of refactoring first to make the next set of changes clearer.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Remove unnecessary casts from fast-importShawn O. Pearce Mon, 12 Mar 2007 19:48:37 +0000 (15:48 -0400)

Remove unnecessary casts from fast-import

Jeff King pointed out that these casts are quite unnecessary, as
the compiler should be doing them anyway, and may cause problems
in the future if the size of the argument for to_atom were to ever
be increased.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>

Merge branch 'maint'Shawn O. Pearce Mon, 12 Mar 2007 19:04:46 +0000 (15:04 -0400)

Merge branch 'maint'

* maint:
fast-import: grow tree storage more aggressively

New fast-import test case for valid tree sortingJeff King Mon, 12 Mar 2007 18:58:50 +0000 (14:58 -0400)

New fast-import test case for valid tree sorting

The Git tree sorting convention is more complex than just the name,
it needs to include the mode too to make sure trees sort as though
their name ends with "/".

This is a simple test case that verifies fast-import keeps the tree
ordering correct after editing the same tree twice in a single
input stream. A recent proposed patch series (that has not yet
been applied) will cause this test to fail, due to a bug in the
way the series handles sorting within the trees.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>

fast-import: grow tree storage more aggressivelyJeff King Sun, 11 Mar 2007 02:39:17 +0000 (21:39 -0500)

fast-import: grow tree storage more aggressively

When building up a tree for a commit, fast-import
dynamically allocates memory for the tree entries. When more
space is needed, the allocated memory is increased by a
constant amount. For very large trees, this means
re-allocating and memcpy()ing the memory O(n) times.

To compound this problem, releasing the previous tree
resource does not free the memory; it is kept in a pool
for future trees. This means that each of the O(n)
allocations will consume increasing amounts of memory,
giving O(n^2) memory consumption.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>

Don't package the git-gui credits file anymoreShawn O. Pearce Mon, 12 Mar 2007 17:40:31 +0000 (13:40 -0400)

Don't package the git-gui credits file anymore

Since git-gui 0.6.4 the credits file is no longer produced.
This file was removed from git-gui due to build issues that
a lot of users and Git developers have reported running into.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Merge branch 'maint' of git://repo.or.cz/git-gui into... Junio C Hamano Mon, 12 Mar 2007 18:43:22 +0000 (11:43 -0700)

Merge branch 'maint' of git://repo.or.cz/git-gui into maint

* 'maint' of git://repo.or.cz/git-gui:
git-gui: Allow 'git gui version' outside of a repository
git-gui: Revert "git-gui: Display all authors of git-gui."
git-gui: Revert "Don't modify CREDITS-FILE if it hasn't changed."
git-gui: Allow committing empty merges

Re-fix get_sha1_oneline()Linus Torvalds Mon, 12 Mar 2007 18:30:38 +0000 (11:30 -0700)

Re-fix get_sha1_oneline()

What the function wants to return is not if we saw any return
from pop_most_recent_commit(), but if we found what was asked
for.

Signed-off-by: Junio C Hamano <junkio@cox.net>

Merge branch 'maint' gitgui-0.6.5Shawn O. Pearce Mon, 12 Mar 2007 17:26:59 +0000 (13:26 -0400)

Merge branch 'maint'

* maint:
git-gui: Allow 'git gui version' outside of a repository
git-gui: Revert "git-gui: Display all authors of git-gui."
git-gui: Revert "Don't modify CREDITS-FILE if it hasn't changed."
git-gui: Allow committing empty merges

git-gui: Allow 'git gui version' outside of a repository gitgui-0.6.4Shawn O. Pearce Mon, 12 Mar 2007 17:24:10 +0000 (13:24 -0400)

git-gui: Allow 'git gui version' outside of a repository

I got a little surprise one day when I tried to run 'git gui version'
outside of a Git repository to determine what version of git-gui was
installed on that system. Turns out we were doing the repository
check long before we got around to command line argument handling.

We now look to see if the only argument we have been given is
'version' or '--version', and if so, print out the version and
exit immediately; long before we consider looking at the Git
version or working directory. This way users can still get to
the git-gui version number even if Git's version cannot be read.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>

git-gui: Revert "git-gui: Display all authors of git... Shawn O. Pearce Mon, 12 Mar 2007 17:26:04 +0000 (13:26 -0400)

git-gui: Revert "git-gui: Display all authors of git-gui."
This reverts commit 871f4c97ad7e021d1a0a98c80c5da77fcf70e4af.

Too many users have complained about the credits generator in
git-gui, so I'm backing the entire thing out. This revert will
finish that series.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>

git-gui: Revert "Don't modify CREDITS-FILE if it hasn... Shawn O. Pearce Mon, 12 Mar 2007 17:25:58 +0000 (13:25 -0400)

git-gui: Revert "Don't modify CREDITS-FILE if it hasn't changed."
This reverts commit 92446aba47b0e0db28f7b858ea387efcca30ab44.

Too many users have complained about the credits generator in
git-gui, so I'm backing the entire thing out.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>

git-gui: Allow committing empty mergesShawn O. Pearce Mon, 12 Mar 2007 17:03:47 +0000 (13:03 -0400)

git-gui: Allow committing empty merges

Johannes Sixt noticed that git-gui would not let the user commit
a merge created by `git merge -s ours` as the ours strategy does
not alter the tree (that is HEAD^1^{tree} = HEAD^{tree} after the
merge). The same issue arises from amending such a merge commit.

We now permit an empty commit (no changed files) if we are doing
a merge commit. Core Git does this with its command line based
git-commit tool, so it makes sense for the GUI to do the same.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>

git-bundle: only die if pack would be empty, warn if... Johannes Schindelin Fri, 9 Mar 2007 16:30:15 +0000 (17:30 +0100)

git-bundle: only die if pack would be empty, warn if ref is skipped

A use case for git-bundle expected to be quite common is this:

$ git bundle create daily.bundle --since=10.days.ago --all

The expected outcome is _not_ to error out if only a couple of the
refs were not changed during the last 10 days.

This patch complains loudly about refs which are skipped due to the
pack not containing the corresponding objects, but dies only if
no objects would be in the pack _at all_.

Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>

git-send-email: configurable bcc and chain-reply-toAvi Kivity Sun, 11 Mar 2007 17:19:44 +0000 (19:19 +0200)

git-send-email: configurable bcc and chain-reply-to

Chain-reply-to is a personal perference, and is unlikely to change from
patchset to patchset. Similarly, bcc is likely to have the same values
every invocation is one likes to bcc oneself.

So, allow both to be set via configuration variables.

Signed-off-by: Avi Kivity <avi@qumranet.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Merge branch 'maint'Junio C Hamano Mon, 12 Mar 2007 06:53:52 +0000 (23:53 -0700)

Merge branch 'maint'

* maint:
git-send-email: Document configuration options
git-merge: warn when -m provided on a fast forward

git-send-email: Document configuration optionsAvi Kivity Sun, 11 Mar 2007 17:19:43 +0000 (19:19 +0200)

git-send-email: Document configuration options

Wishing to implement an email aliases file, I found that they were already
implmented. Document them for the next user.

Signed-off-by: Avi Kivity <avi@qumranet.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

git-merge: warn when -m provided on a fast forwardJ. Bruce Fields Sun, 11 Mar 2007 16:28:56 +0000 (12:28 -0400)

git-merge: warn when -m provided on a fast forward

Warn the user that the "-m" option is ignored in the case of a fast
forward. That may save some confusion in the case where the user
doesn't know about fast forwards yet and may not realize that the
behavior here is intentional.

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Merge branch 'jc/boundary'Junio C Hamano Mon, 12 Mar 2007 06:02:52 +0000 (23:02 -0700)

Merge branch 'jc/boundary'

* jc/boundary:
git-bundle: prevent overwriting existing bundles
git-bundle: die if a given ref is not included in bundle
git-bundle: handle thin packs in subcommand "unbundle"
git-bundle: Make thin packs
git-bundle: avoid packing objects which are in the prerequisites
bundle: fix wrong check of read_header()'s return value & add tests
revision --boundary: fix uncounted case.
revision --boundary: fix stupid typo
git-bundle: make verify a bit more chatty.
revision traversal: SHOWN means shown
git-bundle: various fixups
revision traversal: retire BOUNDARY_SHOW
revision walker: Fix --boundary when limited

Change {pre,post}-receive hooks to use stdinShawn O. Pearce Sat, 10 Mar 2007 08:28:16 +0000 (03:28 -0500)

Change {pre,post}-receive hooks to use stdin

Sergey Vlasov, Andy Parkins and Alex Riesen all pointed out that it
is possible for a single invocation of receive-pack to be given more
refs than the OS might allow us to pass as command line parameters
to a single hook invocation.

We don't want to break these up into multiple invocations (like
xargs might do) as that makes it impossible for the pre-receive
hook to verify multiple related ref updates occur at the same time,
and it makes it harder for post-receive to send out a single batch
notification.

Instead we pass the reference data on a pipe connected to the
hook's stdin, supplying one ref per line to the hook. This way a
single hook invocation can obtain an infinite amount of ref data,
without bumping into any operating system limits.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Split back out update_hook handling in receive-packShawn O. Pearce Sat, 10 Mar 2007 08:28:13 +0000 (03:28 -0500)

Split back out update_hook handling in receive-pack

Since we have decided to change the calling conventions for the
pre-receive and post-receive hooks to take the ref data on stdin
rather than on the command line we cannot use the same logic to
invoke the update hook anymore.

So we take a small step backwards towards what we used to have,
and create a specialized function for executing just the update
hook.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Refactor run_command error handling in receive-packShawn O. Pearce Sat, 10 Mar 2007 08:28:11 +0000 (03:28 -0500)

Refactor run_command error handling in receive-pack

I'm pulling the error handling used to decode the result of
run_command up into a new function so that I can reuse it.
No changes, just a simple code movement.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Teach run_command how to setup a stdin pipeShawn O. Pearce Sat, 10 Mar 2007 08:28:08 +0000 (03:28 -0500)

Teach run_command how to setup a stdin pipe

Sometimes callers trying to use run_command to execute a child
process will want to setup a pipe or file descriptor to redirect
into the child's stdin.

This idea is completely stolen from builtin-bundle's fork_with_pipe,
written by Johannes Schindelin. All credit (and blame) should lie
with Dscho. ;-)

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Split run_command into two halves (start/finish)Shawn O. Pearce Sat, 10 Mar 2007 08:28:05 +0000 (03:28 -0500)

Split run_command into two halves (start/finish)

If the calling process wants to send data to stdin of a
child process it will need to arrange for a pipe and get
the child process running, feed data to it, then wait
for the child process to finish. So we split the run
function into two halves, allowing callers to first
start the child then later finish it.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Start defining a more sophisticated run_commandShawn O. Pearce Sat, 10 Mar 2007 08:28:00 +0000 (03:28 -0500)

Start defining a more sophisticated run_command

There are a number of places where we do some variation of
fork()+exec() but we also need to setup redirection in the process,
much like what run_command does for us already with its option flags.

It would be nice to reuse more of the run_command logic, especially
as that non-fork API helps us to port to odd platforms like Win32.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Remove unused run_command variantsShawn O. Pearce Sat, 10 Mar 2007 08:27:52 +0000 (03:27 -0500)

Remove unused run_command variants

We don't actually use these va_list based variants of run_command
anymore. I'm removing them before I make further improvements.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Switch to run_command_v_opt in revertShawn O. Pearce Sat, 10 Mar 2007 08:27:28 +0000 (03:27 -0500)

Switch to run_command_v_opt in revert

Another change by me is removing the va_list variants of run_command,
one of which is used by builtin-revert.c. To avoid compile errors
I'm refactoring builtin-revert to use the char** variant instead,
as that variant is staying.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

cvsserver: Use Merged response instead of Update-existi... Frank Lichtenheld Tue, 6 Mar 2007 09:42:24 +0000 (10:42 +0100)

cvsserver: Use Merged response instead of Update-existing for merged files

Using Update-existing leads to the client forgetting about the "locally
modified" status of the file which can lead to loss of local changes on
later updates.

Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de>
Acked-by: Martin Langhoff <martin.langhoff@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>

I like the idea of the new ':/<oneline prefix>' notatio... Jim Meyering Sun, 11 Mar 2007 18:49:08 +0000 (19:49 +0100)

I like the idea of the new ':/<oneline prefix>' notation, and gave it
a try, but all I could get was a segfault. It was dereferencing a NULL
commit list. Fix below. With it, this example now works:

$ mkdir .j; cd .j; touch f
$ git-init; git-add f; git-commit -mc f; echo x >f; git-commit -md f
$ git-diff -p :/c :/d
diff --git a/f b/f
index e69de29..587be6b 100644
--- a/f
+++ b/f
@@ -0,0 +1 @@
+x

Signed-off-by: Jim Meyering <jim@meyering.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>

prepare_packed_git(): sort packs by age and localness.Junio C Hamano Fri, 9 Mar 2007 11:52:12 +0000 (03:52 -0800)

prepare_packed_git(): sort packs by age and localness.

When accessing objects, we first look for them in packs that
are linked together in the reverse order of discovery.

Since younger packs tend to contain more recent objects, which
are more likely to be accessed often, and local packs tend to
contain objects more relevant to our specific projects, sort the
list of packs before starting to access them. In addition,
favoring local packs over the ones borrowed from alternates can
be a win when alternates are mounted on network file systems.

Signed-off-by: Junio C Hamano <junkio@cox.net>

Fix broken create_branch() in builtin-branch.Junio C Hamano Thu, 8 Mar 2007 21:59:54 +0000 (13:59 -0800)

Fix broken create_branch() in builtin-branch.

Signed-off-by: Junio C Hamano <junkio@cox.net>

git-branch, git-checkout: autosetup for remote branch... Paolo Bonzini Thu, 8 Mar 2007 09:58:35 +0000 (10:58 +0100)

git-branch, git-checkout: autosetup for remote branch tracking

In order to track and build on top of a branch 'topic' you track from
your upstream repository, you often would end up doing this sequence:

git checkout -b mytopic origin/topic
git config --add branch.mytopic.remote origin
git config --add branch.mytopic.merge refs/heads/topic

This would first fork your own 'mytopic' branch from the 'topic'
branch you track from the 'origin' repository; then it would set up two
configuration variables so that 'git pull' without parameters does the
right thing while you are on your own 'mytopic' branch.

This commit adds a --track option to git-branch, so that "git
branch --track mytopic origin/topic" performs the latter two actions
when creating your 'mytopic' branch.

If the configuration variable branch.autosetupmerge is set to true, you
do not have to pass the --track option explicitly; further patches in
this series allow setting the variable with a "git remote add" option.
The configuration variable is off by default, and there is a --no-track
option to countermand it even if the variable is set.

Signed-off-by: Paolo Bonzini <bonzini@gnu.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Merge branch 'js/attach'Junio C Hamano Sun, 11 Mar 2007 07:38:18 +0000 (23:38 -0800)

Merge branch 'js/attach'

* js/attach:
format-patch --attach: not folding some long headers.
format-patch: add --inline option and make --attach a true attachment

Merge branch 'js/diff-ni'Junio C Hamano Sun, 11 Mar 2007 07:26:33 +0000 (23:26 -0800)

Merge branch 'js/diff-ni'

* js/diff-ni:
Get rid of the dependency to GNU diff in the tests
diff --no-index: support /dev/null as filename
diff-ni: fix the diff with standard input
diff: support reading a file from stdin via "-"

Merge branch 'jc/fsck'Junio C Hamano Sun, 11 Mar 2007 07:10:26 +0000 (23:10 -0800)

Merge branch 'jc/fsck'

* jc/fsck:
fsck: exit with non-zero status upon errors
unpack_sha1_file(): detect corrupt loose object files.
fsck: fix broken loose object check.

Merge branch 'pb/commit-i'Junio C Hamano Sun, 11 Mar 2007 07:00:38 +0000 (23:00 -0800)

Merge branch 'pb/commit-i'

* pb/commit-i:
git-commit: add a --interactive option

Merge branch 'js/revert-cherry'Junio C Hamano Sun, 11 Mar 2007 07:00:11 +0000 (23:00 -0800)

Merge branch 'js/revert-cherry'

* js/revert-cherry:
cherry-pick: Bug fix 'cherry picked from' message.
cherry-pick: Suggest a better method to retain authorship
Make git-revert & git-cherry-pick a builtin

Merge branch 'sp/make'Junio C Hamano Sun, 11 Mar 2007 06:33:13 +0000 (22:33 -0800)

Merge branch 'sp/make'

* sp/make:
Allow "make -w" generate its usual output
Support of "make -s": do not output anything of the build itself
More build output cleaning up
Make 'make' quiet by default
Make 'make' quieter while building git

Merge branch 'maint'Junio C Hamano Sun, 11 Mar 2007 06:07:26 +0000 (22:07 -0800)

Merge branch 'maint'

* maint:
git.el: Retrieve commit log information from .dotest directory.
git.el: Avoid appending a signoff line that is already present.
setup_git_directory_gently: fix off-by-one error
user-manual: install user manual stylesheet with other web documents
user-manual: fix rendering of history diagrams
user-manual: fix missing colon in git-show example
user-manual: fix inconsistent use of pull and merge
user-manual: fix inconsistent example
glossary: fix overoptimistic automatic linking of defined terms
Documentation: s/seperator/separator/
Adjust reflog filemode in shared repository

git.el: Retrieve commit log information from .dotest... Alexandre Julliard Sat, 10 Mar 2007 18:22:26 +0000 (19:22 +0100)

git.el: Retrieve commit log information from .dotest directory.

If a git-am or git-rebase is in progress, fill the commit log buffer
from the commit information found in the various files in the .dotest
directory.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

git.el: Avoid appending a signoff line that is already... Alexandre Julliard Sat, 10 Mar 2007 18:21:25 +0000 (19:21 +0100)

git.el: Avoid appending a signoff line that is already present.

Also avoid inserting an extra newline if other signoff lines are
present.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>

setup_git_directory_gently: fix off-by-one errorMatthias Lederhofer Sun, 11 Mar 2007 01:35:00 +0000 (02:35 +0100)

setup_git_directory_gently: fix off-by-one error

don't tell getcwd that the buffer has one spare byte for an extra /

Signed-off-by: Matthias Lederhofer <matled@gmx.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>

Merge branch 'maint' of git://linux-nfs.org/~bfields... Junio C Hamano Sun, 11 Mar 2007 05:47:01 +0000 (21:47 -0800)

Merge branch 'maint' of git://linux-nfs.org/~bfields/git into maint

* 'maint' of git://linux-nfs.org/~bfields/git:
user-manual: install user manual stylesheet with other web documents
user-manual: fix rendering of history diagrams
user-manual: fix missing colon in git-show example
user-manual: fix inconsistent use of pull and merge
user-manual: fix inconsistent example
glossary: fix overoptimistic automatic linking of defined terms

user-manual: install user manual stylesheet with other... J. Bruce Fields Sun, 11 Mar 2007 03:58:54 +0000 (22:58 -0500)

user-manual: install user manual stylesheet with other web documents

Install the stylesheet needed for the user manual. This should solve
the problem of, e.g.,

http://www.kernel.org/pub/software/scm/git/docs/user-manual.html

lacking a lot of formatting.

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>

user-manual: fix rendering of history diagramsJ. Bruce Fields Sun, 11 Mar 2007 03:38:13 +0000 (22:38 -0500)

user-manual: fix rendering of history diagrams

Asciidoc appears to interpret a backslash at the end of a line as
escaping the end-of-line character, which screws up the display of
history diagrams like

o--o--o
\
o--...

The obvious fix (replacing "\" by "\\") doesn't work. The only
workaround I've found is to include all such diagrams in a LiteralBlock.
Asciidoc claims that should be equivalent to a literal paragraph, so I
don't understand why the difference--perhaps it's an asciidoc bug.

Cc: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>

user-manual: fix missing colon in git-show exampleJ. Bruce Fields Sun, 11 Mar 2007 03:00:12 +0000 (22:00 -0500)

user-manual: fix missing colon in git-show example

There should be a colon in this git-show example.

Cc: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>