Commit Graph

425 Commits

Author SHA1 Message Date
Junio C Hamano
ae59abcdda Merge branch 'js/diff' into next
* js/diff:
  Turn on recursive with --summary
2006-10-05 15:10:46 -07:00
Johannes Schindelin
d7014dc081 Turn on recursive with --summary
This makes "git log/diff --summary" imply recursive behaviour,
whose effect is summarized in one test output:

    --- a/t/t4013/diff.diff-tree_--pretty_--root_--summary_initial
    +++ b/t/t4013/diff.diff-tree_--pretty_--root_--summary_initial
    @@ -5,7 +5,7 @@ Date:   Mon Jun 26 00:00:00 2006 +0000

	 Initial

    - create mode 040000 dir
    + create mode 100644 dir/sub
      create mode 100644 file0
      create mode 100644 file2
     $

When a file is created in a subdirectory, we used to say just
the directory name only when that directory also was created,
which did not make sense from two reasons.  It is not any more
significant to create a new file in a new directory than to
create a new file in an existing directory, and even if it were,
reportinging the new directory name without saying the actual
filename is not useful.

Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-10-05 15:10:40 -07:00
Junio C Hamano
d1e9e65cc3 Merge branch 'jc/web' into next
* jc/web:
  gitweb: make leftmost column of blame less cluttered.
  gitweb: document webserver configuration for common gitweb/repo URLs.
  gitweb: Escape ESCAPE (\e) character
  escape tilde in Documentation/git-rev-parse.txt
  Error in test description of t1200-tutorial
  lock_ref_sha1_basic does not remove empty directories on BSD
2006-10-03 01:10:11 -07:00
Robin Rosenberg
b599deec18 Error in test description of t1200-tutorial
Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-10-03 01:02:27 -07:00
Junio C Hamano
be0616ae49 Merge branch 'mw/pathinfo' into next
* mw/pathinfo:
  gitweb: start to generate PATH_INFO URLs.
  git-push: .git/remotes/ file does not require SP after colon
  git-mv: invalidate the removed path properly in cache-tree
  Makefile: install and clean merge-recur, still.
  GIT 1.4.3-rc1
2006-10-02 00:50:46 -07:00
Junio C Hamano
f5961572a0 Merge branch 'maint'
* maint:
  git-push: .git/remotes/ file does not require SP after colon
  git-mv: invalidate the removed path properly in cache-tree
2006-10-02 00:47:32 -07:00
Junio C Hamano
4fddf5798d git-mv: invalidate the removed path properly in cache-tree
The command updated the cache without invalidating the cache
tree entries while removing an existing entry.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-10-01 23:32:39 -07:00
Junio C Hamano
33e1b12047 Merge branch 'lj/refs' into next
* lj/refs:
  Clean up "git-branch.sh" and add remove recursive dir test cases.
  Fix a remove_empty_dir_recursive problem.
2006-10-01 09:09:30 -07:00
Christian Couder
14c8a681f7 Clean up "git-branch.sh" and add remove recursive dir test cases.
Now that directory recursive remove works in the core C code, we
don't need to do it in "git-branch.sh".

Also add test cases to check that directory recursive remove will
continue to work.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-10-01 08:42:01 -07:00
Junio C Hamano
69de8cc852 Merge branch 'jc/gitpm'
* jc/gitpm: (52 commits)
  Remove -fPIC which was only needed for Git.xs
  Git.pm: Kill Git.xs for now
  Revert "Make it possible to set up libgit directly (instead of from the environment)"
  Revert "Git.pm: Introduce fast get_object() method"
  Revert "Convert git-annotate to use Git.pm"
  Fix compilation with Sun CC
  pass DESTDIR to the generated perl/Makefile
  Eliminate Scalar::Util usage from private-Error.pm
  Convert git-annotate to use Git.pm
  Git.pm: Introduce fast get_object() method
  Make it possible to set up libgit directly (instead of from the environment)
  Work around sed and make interactions on the backslash at the end of line.
  Git.pm: Introduce ident() and ident_person() methods
  Convert git-send-email to use Git.pm
  Git.pm: Add config() method
  Use $GITPERLLIB instead of $RUNNING_GIT_TESTS and centralize @INC munging
  INSTALL: a tip for running after building but without installing.
  Perly Git: make sure we do test the freshly built one.
  Git.pm: Don't #define around die
  Git.xs: older perl do not know const char *
  ...
2006-09-30 23:38:24 -07:00
Junio C Hamano
8352b76af2 Merge branch 'lj/refs' into next
* lj/refs:
  Uncomment test case: git branch c/d should barf if branch c exists.
  When creating branch c/d check that branch c does not already exists.
  Add pack-refs and show-ref test cases.
  runstatus: do not recurse into subdirectories if not needed
2006-09-27 22:44:37 -07:00
Christian Couder
fc12f0829d Uncomment test case: git branch c/d should barf if branch c exists.
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-09-27 22:26:43 -07:00
Christian Couder
919a3c9813 Add pack-refs and show-ref test cases.
Some of these test cases are from Junio.
One test case is commented out because it doesn't work right now.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-09-27 22:24:45 -07:00
Junio C Hamano
2958d9b5db Merge branch 'master' into lj/refs
* master: (72 commits)
  runstatus: do not recurse into subdirectories if not needed
  grep: fix --fixed-strings combined with expression.
  grep: free expressions and patterns when done.
  Corrected copy-and-paste thinko in ignore executable bit test case.
  An illustration of rev-list --parents --pretty=raw
  Allow git-checkout when on a non-existant branch.
  gitweb: Decode long title for link tooltips
  git-svn: Fix fetch --no-ignore-externals with GIT_SVN_NO_LIB=1
  Ignore executable bit when adding files if filemode=0.
  Remove empty ref directories that prevent creating a ref.
  Use const for interpolate arguments
  git-archive: update documentation
  Deprecate merge-recursive.py
  gitweb: fix over-eager application of esc_html().
  Allow '(no author)' in git-svn's authors file.
  Allow 'svn fetch' on '(no date)' revisions in Subversion.
  git-repack: allow git-repack to run in subdirectory
  Remove upload-tar and make git-tar-tree a thin wrapper to git-archive
  git-tar-tree: Move code for git-archive --format=tar to archive-tar.c
  git-tar-tree: Remove duplicate git_config() call
  ...
2006-09-27 22:23:12 -07:00
Junio C Hamano
51b2dd4e3f Merge branch 'cc/branch-test'
* cc/branch-test:
  Remove empty ref directories that prevent creating a ref.
2006-09-27 22:17:01 -07:00
Junio C Hamano
2b83ade977 Merge branch 'sp/void'
* sp/void:
  Allow git-checkout when on a non-existant branch.
2006-09-27 21:51:29 -07:00
Junio C Hamano
e38604e006 Merge branch 'jc/deprecate-recursive'
* jc/deprecate-recursive:
  Deprecate merge-recursive.py
2006-09-27 21:41:24 -07:00
Junio C Hamano
40e6c01fac Merge branch 'jl/virtual' into next
* jl/virtual:
  Removed memory leaks from interpolation table uses.
  Cleaned up git-daemon virtual hosting support.
  grep: fix --fixed-strings combined with expression.
  grep: free expressions and patterns when done.
  Corrected copy-and-paste thinko in ignore executable bit test case.
  An illustration of rev-list --parents --pretty=raw
2006-09-27 18:02:14 -07:00
Shawn Pearce
209e756931 Corrected copy-and-paste thinko in ignore executable bit test case.
This test should be testing update-index --add, not git-add as the
latter is implemented in terms of the former.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-09-27 12:44:02 -07:00
Junio C Hamano
16652170bf An illustration of rev-list --parents --pretty=raw
This script creates two separate histories, A and B, each of
which does:

      (A0, B0): create fileA and subdir/fileB
      (A1, B1): modify fileA
      (A2, B2): modify subdir/fileB

and then grafts them together to make B0 a child of A2.  So
the final history looks like (time flows from top to bottom):

		true parent	touches subdir?

	A0	none		yes (creates it)
        A1      A0		no
        A2	A1		yes
        B0	none		yes (different from what's in A2)
        B1	B0		no
        B2	B1		yes

"git rev-list --parents --pretty=raw B2" would give "fake"
parents on the "commit " header lines while "parent " header
lines show the parent as recorded in the commit object (i.e. B0
appears to have A2 as its parent on "commit " header but there
is no "parent A2" header line in it).

When you have path limiters, we simplify history to omit
commits that do not affect the specified paths.

So "git rev-list --parents --pretty=raw B2 subdir" would return
"B2 B0 A2 A0" (because B1 and A1 do not touch the path).  When
it does so, the "commit " header lines have "fake" parents
(i.e. B2 appears to have B0 as its parent on "commit " header),
but you can still get the true parents by looking at "parent "
header.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-09-27 12:34:37 -07:00
Junio C Hamano
24bbafd897 Merge branch 'sp/void' into next
* sp/void:
  Allow git-checkout when on a non-existant branch.
  gitweb: Decode long title for link tooltips
  git-svn: Fix fetch --no-ignore-externals with GIT_SVN_NO_LIB=1
  Ignore executable bit when adding files if filemode=0.
2006-09-27 00:43:55 -07:00
Shawn Pearce
5a03e7f253 Allow git-checkout when on a non-existant branch.
I've seen some users get into situtations where their HEAD
symbolic-ref is pointing at a non-existant ref.  (Sometimes this
happens during clone when the remote repository lacks a 'master'
branch.)  If this happens the user is unable to use git-checkout
to switch branches as there is no prior commit to merge from.

So instead of giving the user low-level errors about how HEAD
can't be resolved and how not a single revision was given change
the type of checkout to be a force and go through with the user's
request anyway.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-09-27 00:43:50 -07:00
Shawn Pearce
fd28b34afd Ignore executable bit when adding files if filemode=0.
If the user has configured core.filemode=0 then we shouldn't set
the execute bit in the index when adding a new file as the user
has indicated that the local filesystem can't be trusted.

This means that when adding files that should be marked executable
in a repository with core.filemode=0 the user must perform a
'git update-index --chmod=+x' on the file before committing the
addition.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-09-26 22:42:52 -07:00
Junio C Hamano
1b5bc26711 Merge branch 'cc/branch-test' into next
* cc/branch-test:
  Remove empty ref directories that prevent creating a ref.
  Use const for interpolate arguments
  git-archive: update documentation
2006-09-26 00:00:41 -07:00
Christian Couder
9c7b0b3fc4 Remove empty ref directories that prevent creating a ref.
This patch also adds test cases from Linus and Junio.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-09-25 23:54:40 -07:00
Junio C Hamano
7a39b57d10 Merge branch 'jc/deprecate-recursive' into next
* jc/deprecate-recursive:
  Deprecate merge-recursive.py
  gitweb: fix over-eager application of esc_html().
  Allow '(no author)' in git-svn's authors file.
  Allow 'svn fetch' on '(no date)' revisions in Subversion.
  Remove upload-tar and make git-tar-tree a thin wrapper to git-archive
  git-tar-tree: Move code for git-archive --format=tar to archive-tar.c
  git-tar-tree: Remove duplicate git_config() call
2006-09-24 20:35:19 -07:00
Junio C Hamano
a06f678eb9 Deprecate merge-recursive.py
This renames merge-recursive written in Python to merge-recursive-old,
and makes merge-recur as a synonym to merge-recursive.  We do not remove
merge-recur yet, but we will remove merge-recur and merge-recursive-old
in a few releases down the road.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-09-24 20:33:35 -07:00
Junio C Hamano
a6afd58013 Merge branch 'sb/branch-attributes' into next
* sb/branch-attributes:
  Add test for the default merges in fetch.
  fetch: get the remote branches to merge from the branch properties
  Add t5510 to test per branch configuration affecting git-fetch.
  Fetch: default remote repository from branch properties
2006-09-24 02:00:39 -07:00
Santi Béjar
6cc7c36d5e Add test for the default merges in fetch.
[jc: with minor fix-ups]

Signed-off-by: Santi Béjar <sbejar@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-09-24 02:00:21 -07:00
Junio C Hamano
7be1d62c6f Add t5510 to test per branch configuration affecting git-fetch.
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-09-24 00:13:49 -07:00
Junio C Hamano
f2bbada7ba Merge branch 'sk/svnimport' into next
* sk/svnimport:
  git-svnimport: Parse log message for Signed-off-by: lines
  Quote arguments to tr in test-lib
  Fix snapshot link in tree view
  gitweb: Fix @git_base_url_list usage
  gitweb: Fix tree link associated with each commit log entry.
  Make path in tree view look nicer
2006-09-22 20:53:16 -07:00
Robin Rosenberg
3d5c0cc938 Quote arguments to tr in test-lib
When there are single-character filenames in the test directory,
the shell tries to expand regexps meant for tr.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-09-22 17:00:36 -07:00
Junio C Hamano
cddb939ed2 Merge branch 'master' into next
* master:
  Document receive.denyNonFastforwards
  receive-pack: plug memory leak in fast-forward checking code.
  add receive.denyNonFastforwards config variable
  sha1_name.c: understand "describe" output as a valid object name
  Make hexval() available to others.
2006-09-21 01:01:56 -07:00
Johannes Schindelin
199a92186b Document receive.denyNonFastforwards
[jc: with a fix to config handling in t5400 test, which took
 annoyingly long to diagnose.]

Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-09-20 23:32:22 -07:00
Junio C Hamano
01ff767a32 Merge branch 'lt/refs' into next
* lt/refs:
  wt-status: use simplified resolve_ref to find current branch
  Fix t1400-update-ref test minimally
  Enable the packed refs file format
  Make ref resolution saner
  Add support for negative refs
  Start handling references internally as a sorted in-memory list
  gitweb fix validating pg (page) parameter
  git-repack(1): document --window and --depth
  git-apply(1): document --unidiff-zero
  gitweb: fix warnings in PATH_INFO code and add export_ok/strict_export
  upload-archive: monitor child communication even more carefully.
2006-09-17 19:24:00 -07:00
Junio C Hamano
ef176ad06a Fix t1400-update-ref test minimally
It depended on specific error messages to detect failure but the
implementation changed and broke the test.  This fixes the breakage
minimally.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-09-17 19:09:12 -07:00
Junio C Hamano
414e5c2024 Merge branch 'master' into next
* master:
  gitweb: export options
  gitweb: do not use 'No such directory' error message
  git-tar-tree: devolve git-tar-tree into a wrapper for git-archive
  gitweb: fix uninitialized variable warning.
  gitweb: more support for PATH_INFO based URLs
  apply --unidiff-zero: loosen sanity checks for --unidiff=0 patches
  t1400: make test debuggable.
2006-09-17 03:12:03 -07:00
Junio C Hamano
4be609625e apply --unidiff-zero: loosen sanity checks for --unidiff=0 patches
In "git-apply", we have a few sanity checks and heuristics that
expects that the patch fed to us is a unified diff with at least
one line of context.

 * When there is no leading context line in a hunk, the hunk
   must apply at the beginning of the preimage.  Similarly, no
   trailing context means that the hunk is anchored at the end.

 * We learn a patch deletes the file from a hunk that has no
   resulting line (i.e. all lines are prefixed with '-') if it
   has not otherwise been known if the patch deletes the file.
   Similarly, no old line means the file is being created.

And we declare an error condition when the file created by a
creation patch already exists, and/or when a deletion patch
still leaves content in the file.

These sanity checks are good safety measures, but breaks down
when people feed a diff generated with --unified=0.  This was
recently noticed first by Matthew Wilcox and Gerrit Pape.

This adds a new flag, --unified-zero, to allow bypassing these
checks.  If you are in control of the patch generation process,
you should not use --unified=0 patch and fix it up with this
flag; rather you should try work with a patch with context.  But
if all you have to work with is a patch without context, this
flag may come handy as the last resort.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-09-17 01:12:37 -07:00
Junio C Hamano
8aac4b45f3 t1400: make test debuggable.
I had a hard time figuring out why this test was failing with
the packed-refs update without running it under "sh -x".  This
makes output from "sh t1400-update-ref.sh -v" more descriptive.

Updating other tests would be a good janitorial task.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-09-16 13:41:14 -07:00
Junio C Hamano
f9e7fbc05f Merge branch 'jc/binary' into next
* jc/binary:
  diff --binary generates full index on binary files.
  Make apply --binary a no-op.
2006-09-07 02:58:48 -07:00
Junio C Hamano
2b6eef943f Make apply --binary a no-op.
Historically we did not allow binary patch applied without an
explicit permission from the user, and this flag was the way to
do so.  This makes the flag a no-op by always allowing binary
patch application.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-09-07 02:44:40 -07:00
Junio C Hamano
e886216c72 Merge branch 'cc/trace' into next
* cc/trace:
  Trace into a file or an open fd and refactor tracing code.
  Replace uses of strdup with xstrdup.
  consolidate two copies of new style object header parsing code.
  Documentation: Fix howto/revert-branch-rebase.html generation
  fmt-merge-msg: fix off-by-one bug
  git-rev-list(1): group options; reformat; document more options
2006-09-02 21:42:12 -07:00
Christian Couder
6ce4e61f1b Trace into a file or an open fd and refactor tracing code.
If GIT_TRACE is set to an absolute path (starting with a
'/' character), we interpret this as a file path and we
trace into it.

Also if GIT_TRACE is set to an integer value greater than
1 and lower than 10, we interpret this as an open fd value
and we trace into it.

Note that this behavior is not compatible with the
previous one.

We also trace whole messages using one write(2) call to
make sure messages from processes do net get mixed up in
the middle.

This patch makes it possible to get trace information when
running "make test".

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-09-02 14:47:53 -07:00
Junio C Hamano
c9dce0de3e Merge branch 'cc/trace' into next
* cc/trace:
  Trace into open fd and refactor tracing code.
  t5710: fix two thinkos.
  gitweb: Extend parse_difftree_raw_line to save commit info
  gitweb: Separate printing of git_tree row into git_print_tree_entry
  gitweb: Move git-ls-tree output parsing to parse_ls_tree_line
  use do() instead of require() to include configuration
  gitweb: Remove forgotten call to git_to_hash
  log-tree.c: cleanup a bit append_signoff()
  Remove uneeded #include
  Makefile: fix typo
  unpack-objects: remove unused variable "eof"
  git-fsck-objects: lacking default references should not be fatal
  Check if pack directory exists prior to descending into it
2006-08-31 14:17:00 -07:00
Christian Couder
7cf67205ca Trace into open fd and refactor tracing code.
Now if GIT_TRACE is set to an integer value greater than 1
and lower than 10, we interpret this as an open fd value
and we trace into it. Note that this behavior is not
compatible with the previous one.

We also trace whole messages using one write(2) call to
make sure messages from processes do net get mixed up in
the middle.

It's now possible to run the tests like this:

	GIT_TRACE=9 make test 9>/var/tmp/trace.log

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-08-31 14:16:38 -07:00
Junio C Hamano
2c6d22df9f t5710: fix two thinkos.
The intention of the test seems to be to build a long chain of
clones that locally borrow objects from their parents and see the
system give up dereferencing long chains.  There were two problems:

 (1) it did not test the right repository;
 (2) it did not build a chain long enough to trigger the limitation.

I do not think it is a good test to make sure the limitation the
current implementation happens to have still exists, but that is
a topic at a totally different level.

At least this fixes the broken test.

Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-08-31 14:16:09 -07:00
Junio C Hamano
b32d37a3a6 Merge branch 'jc/apply'
* jc/apply:
  git-apply --reject: finishing touches.
  apply --reject: count hunks starting from 1, not 0
  git-apply --verbose
  git-apply --reject: send rejects to .rej files.
  git-apply --reject
  apply --reverse: tie it all together.
  diff.c: make binary patch reversible.
  builtin-apply --reverse: two bugfixes.
2006-08-27 17:51:05 -07:00
Junio C Hamano
d54f407922 Merge branch 'master' into next
* master:
  Remove unnecessary forward declaration of unpack_entry.
  Verify we know how to read a pack before trying to using it.
  Add write_or_die(), a helper function
  Axe the last ent
  builtin-mv: readability patch
  git-mv: fix off-by-one error
  git-mv: special case destination "."
2006-08-22 02:22:49 -07:00
Junio C Hamano
e866ffdf9b Merge branch 'maint'
* maint:
  builtin-mv: readability patch
  git-mv: fix off-by-one error
  git-mv: special case destination "."
2006-08-21 14:16:38 -07:00
Johannes Schindelin
c5203bdf66 git-mv: special case destination "."
Since the normalized basename of "." is "", the check for directory
failed erroneously.

Noticed by Fredrik Kuivinen.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
2006-08-21 14:15:43 -07:00