Kevin Bracey [Thu, 16 May 2013 15:32:41 +0000 (18:32 +0300)]
revision.c: make default history consider bottom commits
Previously, the default history treated bottom commits the same as any
other UNINTERESTING commit, which could force it down side branches.
Consider the following history:
*A--*B---D--*F * marks !TREESAME parent paths
\ /*
`-C-'
When requesting "B..F", B is UNINTERESTING but TREESAME to D. C is
!UNINTERESTING.
So default following would go from D into the irrelevant side branch C
to A, rather than to B. Note also that if there had been an extra
!UNINTERESTING commit B1 between B and D, it wouldn't have gone down C.
Change the default following to test relevant_commit() instead of
!UNINTERESTING, so it can proceed straight from D to B, thus finishing
the traversal of that path.
Signed-off-by: Kevin Bracey <redacted>
Signed-off-by: Junio C Hamano <redacted>
Kevin Bracey [Thu, 16 May 2013 15:32:40 +0000 (18:32 +0300)]
revision.c: don't show all merges for --parents
When using --parents or --children, get_commit_action() previously showed
all merges, even if TREESAME to both parents.
This was intended to tie together the topology of the rewritten parents,
but it was excessive - in fact we only need to show merges that have two
or more relevant parents. Merges at the boundary do not necessarily need
to be shown.
Signed-off-by: Kevin Bracey <redacted>
Signed-off-by: Junio C Hamano <redacted>
Kevin Bracey [Thu, 16 May 2013 15:32:39 +0000 (18:32 +0300)]
revision.c: discount side branches when computing TREESAME
Use the BOTTOM flag to define relevance for pruning. Relevant commits
are those that are !UNINTERESTING or BOTTOM, and this allows us to
identify irrelevant side branches (UNINTERESTING && !BOTTOM).
If a merge has relevant parents, and it is TREESAME to them, then do not
let irrelevant parents cause the merge to be treated as !TREESAME.
When considering simplification, don't always include all merges -
merges with exactly one relevant parent can be simplified, if TREESAME
according to the above rule.
These two changes greatly increase simplification in limited, pruned
revision lists.
Signed-off-by: Kevin Bracey <redacted>
Signed-off-by: Junio C Hamano <redacted>
Kevin Bracey [Thu, 16 May 2013 15:32:38 +0000 (18:32 +0300)]
revision.c: add BOTTOM flag for commits
When performing edge-based operations on the revision graph, it can be
useful to be able to identify the INTERESTING graph's connection(s) to
the bottom commit(s) specified by the user.
Conceptually when the user specifies "A..B" (== B ^A), they are asking
for the history from A to B. The first connection from A onto the
INTERESTING graph is part of that history, and should be considered. If
we consider only INTERESTING nodes and their connections, then we're
really only considering the history from A's immediate descendants to B.
This patch does not change behaviour, but adds a new BOTTOM flag to
indicate the bottom commits specified by the user, ready to be used by
following patches.
We immediately use the BOTTOM flag to return collect_bottom_commits() to
its original approach of examining the pending commit list rather than
the command line. This will ensure alignment of the definition of
"bottom" with future patches.
Signed-off-by: Kevin Bracey <redacted>
Signed-off-by: Junio C Hamano <redacted>
Kevin Bracey [Thu, 16 May 2013 15:32:37 +0000 (18:32 +0300)]
simplify-merges: drop merge from irrelevant side branch
Reimplement commit
4b7f53da on top of the new simplify-merges
infrastructure, tightening the condition to only consider root parents;
the original version incorrectly dropped parents that were TREESAME to
anything.
Original log message follows.
The merge simplification rule stated in
6546b59 (revision traversal:
show full history with merge simplification, 2008-07-31) still
treated merge commits too specially. Namely, in a history with this
shape:
---o---o---M
/
x---x---x
where three 'x' were on a history completely unrelated to the main
history 'o' and do not touch any of the paths we are following, we
still said that after simplifying all of the parents of M, 'x'
(which is the leftmost 'x' that rightmost 'x simplifies down to) and
'o' (which would be the last commit on the main history that touches
the paths we are following) are independent from each other, and
both need to be kept.
That is incorrect; when the side branch 'x' never touches the paths,
it should be removed to allow M to simplify down to the last commit
on the main history that touches the paths.
Suggested-by: Junio C Hamano <redacted>
Signed-off-by: Kevin Bracey <redacted>
Signed-off-by: Junio C Hamano <redacted>
Kevin Bracey [Thu, 16 May 2013 15:32:36 +0000 (18:32 +0300)]
simplify-merges: never remove all TREESAME parents
When simplifying an odd merge, such as one that used "-s ours", we may
find ourselves TREESAME to apparently redundant parents. Prevent
simplify_merges() from removing every TREESAME parent; if this would
happen reinstate the first TREESAME parent - the one that the default
log would have followed.
This avoids producing a totally disjoint history from the default log
when the default log is a better explanation of the end result, and aids
visualisation of odd merges.
Signed-off-by: Kevin Bracey <redacted>
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Thu, 16 May 2013 15:32:35 +0000 (18:32 +0300)]
t6012: update test for tweaked full-history traversal
Signed-off-by: Junio C Hamano <redacted>
Kevin Bracey [Thu, 16 May 2013 15:32:34 +0000 (18:32 +0300)]
revision.c: Make --full-history consider more merges
History simplification previously always treated merges as TREESAME
if they were TREESAME to any parent.
While this was consistent with the default behaviour, this could be
extremely unhelpful when searching detailed history, and could not be
overridden. For example, if a merge had ignored a change, as if by "-s
ours", then:
git log -m -p --full-history -Schange file
would successfully locate "change"'s addition but would not locate the
merge that resolved against it.
Futher, simplify_merges could drop the actual parent that a commit
was TREESAME to, leaving it as a normal commit marked TREESAME that
isn't actually TREESAME to its remaining parent.
Now redefine a commit's TREESAME flag to be true only if a commit is
TREESAME to _all_ of its parents. This doesn't affect either the default
simplify_history behaviour (because partially TREESAME merges are turned
into normal commits), or full-history with parent rewriting (because all
merges are output). But it does affect other modes. The clearest
difference is that --full-history will show more merges - sufficient to
ensure that -m -p --full-history log searches can really explain every
change to the file, including those changes' ultimate fate in merges.
Also modify simplify_merges to recalculate TREESAME after removing
a parent. This is achieved by storing per-parent TREESAME flags on the
initial scan, so the combined flag can be easily recomputed.
This fixes some t6111 failures, but creates a couple of new ones -
we are now showing some merges that don't need to be shown.
Signed-off-by: Kevin Bracey <redacted>
Signed-off-by: Junio C Hamano <redacted>
Kevin Bracey [Thu, 16 May 2013 15:32:33 +0000 (18:32 +0300)]
Documentation: avoid "uninteresting"
The documentation of --boundary uses the term "uninteresting", which is
not used or defined anywhere else in the documentation. This is
unhelpful and confusing to anyone who hasn't seen the UNINTERESTING
flag in the source code.
Change to use "excluded", as per revisions.txt.
Signed-off-by: Kevin Bracey <redacted>
Signed-off-by: Junio C Hamano <redacted>
Kevin Bracey [Thu, 16 May 2013 15:32:32 +0000 (18:32 +0300)]
rev-list-options.txt: correct TREESAME for P
In the example given, P is not TREESAME to E. This doesn't affect the
current result, but it will matter when we change behaviour.
Signed-off-by: Kevin Bracey <redacted>
Signed-off-by: Junio C Hamano <redacted>
Kevin Bracey [Thu, 16 May 2013 15:32:31 +0000 (18:32 +0300)]
t6111: add parents to tests
Signed-off-by: Kevin Bracey <redacted>
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Thu, 16 May 2013 15:32:30 +0000 (18:32 +0300)]
t6111: allow checking the parents as well
Signed-off-by: Junio C Hamano <redacted>
Kevin Bracey [Thu, 16 May 2013 15:32:29 +0000 (18:32 +0300)]
t6111: new TREESAME test set
Some side branching and odd merging to illustrate various flaws in
revision list scans, particularly when limiting the list.
Many expected failures, which will be gone by the end of the "history
traversal refinements" series.
Signed-off-by: Kevin Bracey <redacted>
Signed-off-by: Junio C Hamano <redacted>
Kevin Bracey [Thu, 16 May 2013 15:32:28 +0000 (18:32 +0300)]
t6019: test file dropped in -s ours merge
In preparation for upcoming TREESAME work, check the result for G.t,
which is dropped in "-s ours" merge L. The default rev-list is empty, as
expected - it follows the first parent path where it never existed.
Unfortunately, --ancestry-path is also empty. Merges H J and L are all
TREESAME to 1 parent, so are treated as TREESAME and not shown. This is
clearly undesirable in the case of merge L, which dropped our G.t by
taking the non-ancestry-path version. Document this as a known failure,
and expect "H J L", the 3 merges along the path that had to chose G.t
versions.
Signed-off-by: Kevin Bracey <redacted>
Signed-off-by: Junio C Hamano <redacted>
Kevin Bracey [Thu, 16 May 2013 15:32:27 +0000 (18:32 +0300)]
decorate.c: compact table when growing
When growing the table, take the opportunity to "compact" it by removing
entries with NULL decoration.
Users may have "removed" decorations by passing NULL to
insert_decoration. An object's table entry can't actually be removed
during normal operation, as it would break the linear hash collision
search. But we can remove NULL decoration entries when rebuilding the
table.
Signed-off-by: Kevin Bracey <redacted>
Signed-off-by: Junio C Hamano <redacted>
Kevin Bracey [Mon, 13 May 2013 15:00:47 +0000 (18:00 +0300)]
revision.c: treat A...B merge bases as if manually specified
The documentation assures users that "A...B" is defined as "A B --not
$(git merge-base --all A B)". This wasn't in fact quite true, because
the calculated merge bases were not sent to add_rev_cmdline().
The main effect of this was that although
git rev-list --ancestry-path A B --not $(git merge-base --all A B)
worked, the simpler form
git rev-list --ancestry-path A...B
failed with a "no bottom commits" error.
Other potential users of bottom commits could also be affected by this
problem, if they examine revs->cmdline_info; I came across the issue in
my proposed history traversal refinements series.
So ensure that the calculated merge bases are sent to add_rev_cmdline(),
flagged with new 'whence' enum value REV_CMD_MERGE_BASE.
Signed-off-by: Kevin Bracey <redacted>
Signed-off-by: Junio C Hamano <redacted>
Kevin Bracey [Mon, 13 May 2013 15:00:46 +0000 (18:00 +0300)]
t6019: demonstrate --ancestry-path A...B breakage
Signed-off-by: Kevin Bracey <redacted>
Signed-off-by: Junio C Hamano <redacted>
Torsten Bögershausen [Sat, 11 May 2013 13:25:52 +0000 (15:25 +0200)]
test-bzr: do not use unportable sed '\+'
Using sed -e '/[0-9]\+//' to find "one or more digits" is not
portable.
Use the Basic Regular Expression '/[0-9][0-9]*//' instead.
Signed-off-by: Torsten Bögershausen <redacted>
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Sat, 11 May 2013 18:09:00 +0000 (11:09 -0700)]
Merge git://git.bogomips.org/git-svn
* git://git.bogomips.org/git-svn:
git-svn: added an --include-path flag
Git::SVN::*: add missing "NAME" section to perldoc
git-svn: avoid self-referencing mergeinfo
Junio C Hamano [Thu, 9 May 2013 20:32:54 +0000 (13:32 -0700)]
Sync with v1.8.2.3
* maint:
Git 1.8.2.3
t5004: avoid using tar for checking emptiness of archive
t5004: ignore pax global header file
mergetools/kdiff3: do not use --auto when diffing
transport-helper: trivial style cleanup
Junio C Hamano [Thu, 9 May 2013 19:37:53 +0000 (12:37 -0700)]
Git 1.8.2.3
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Thu, 9 May 2013 20:30:19 +0000 (13:30 -0700)]
Merge branch 'mv/sequencer-pick-error-diag'
Fix "git cherry-pick $annotated_tag", which was mistakenly rejected.
* mv/sequencer-pick-error-diag:
cherry-pick: picking a tag that resolves to a commit is OK
Junio C Hamano [Thu, 9 May 2013 20:27:49 +0000 (13:27 -0700)]
cherry-pick: picking a tag that resolves to a commit is OK
Earlier,
21246dbb9e0a (cherry-pick: make sure all input objects are
commits, 2013-04-11) tried to catch an unlikely "git cherry-pick $blob"
as an error, but broke a more important use case to cherry-pick a
tag that points at a commit.
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Thu, 9 May 2013 19:42:17 +0000 (12:42 -0700)]
Merge branch 'tr/copy-revisions-from-stdin' into maint
* tr/copy-revisions-from-stdin:
read_revisions_from_stdin: make copies for handle_revision_arg
René Scharfe [Thu, 9 May 2013 13:13:47 +0000 (15:13 +0200)]
t5004: avoid using tar for checking emptiness of archive
Test 2 of t5004 checks if a supposedly empty tar archive really
contains no files.
24676f02 (t5004: fix issue with empty archive test
and bsdtar) removed our commit hash to make it work with bsdtar, but
the test still fails on NetBSD and OpenBSD, which use their own tar
that considers a tar file containing only NULs as broken.
Here's what the different archivers do when asked to create a tar
file without entries:
$ uname -v
NetBSD 6.0.1 (GENERIC)
$ gtar --version | head -1
tar (GNU tar) 1.26
$ bsdtar --version
bsdtar 2.8.4 - libarchive 2.8.4
$ : >zero.tar
$ perl -e 'print "\0" x 10240' >tenk.tar
$ sha1 zero.tar tenk.tar
SHA1 (zero.tar) =
da39a3ee5e6b4b0d3255bfef95601890afd80709
SHA1 (tenk.tar) =
34e163be8e43c5631d8b92e9c43ab0bf0fa62b9c
$ : | tar cf - -T - | sha1
da39a3ee5e6b4b0d3255bfef95601890afd80709
$ : | gtar cf - -T - | sha1
34e163be8e43c5631d8b92e9c43ab0bf0fa62b9c
$ : | bsdtar cf - -T - | sha1
34e163be8e43c5631d8b92e9c43ab0bf0fa62b9c
So NetBSD's native tar creates an empty file, while GNU tar and bsdtar
both give us 10KB of NULs -- just like git archive with an empty tree.
Now let's see how the archivers handle these two kinds of empty tar
files:
$ tar tf zero.tar; echo $?
tar: Unexpected EOF on archive file
1
$ gtar tf zero.tar; echo $?
gtar: This does not look like a tar archive
gtar: Exiting with failure status due to previous errors
2
$ bsdtar tf zero.tar; echo $?
0
$ tar tf tenk.tar; echo $?
tar: Cannot identify format. Searching...
tar: End of archive volume 1 reached
tar: Sorry, unable to determine archive format.
1
$ gtar tf tenk.tar; echo $?
0
$ bsdtar tf tenk.tar; echo $?
0
NetBSD's tar complains about both, bsdtar happily accepts any of them
and GNU tar doesn't like zero-length archive files. So the safest
course of action is to stay with our block-of-NULs format which is
compatible with GNU tar and bsdtar, as we can't make NetBSD's native
tar happy anyway.
We can simplify our test, however, by taking tar out of the picture.
Instead of extracting the archive and checking for the non-presence of
files, check if the file has a size of 10KB and contains only NULs.
This makes t5004 pass on NetBSD and OpenBSD.
Signed-off-by: Rene Scharfe <redacted>
Signed-off-by: Junio C Hamano <redacted>
René Scharfe [Thu, 9 May 2013 13:10:48 +0000 (15:10 +0200)]
t5004: ignore pax global header file
Versions of tar that don't know pax headers -- like the ones in NetBSD 6
and OpenBSD 5.2 -- extract them as regular files. Explicitly ignore the
file created for our global header when checking the list of extracted
files, as this is normal and harmless fall-back behaviour. This fixes
test 3 of t5004 on these platforms.
Signed-off-by: Rene Scharfe <redacted>
Signed-off-by: Junio C Hamano <redacted>
David Aguilar [Thu, 9 May 2013 09:13:28 +0000 (02:13 -0700)]
mergetools/kdiff3: do not use --auto when diffing
The `kdiff3 --auto` help message is, "No GUI if all conflicts are auto-
solvable." This flag was carried over from the original mergetool
commands. diff_cmd() is for two-way comparisons only so remove the
superfluous flag.
Signed-off-by: David Aguilar <redacted>
Signed-off-by: Junio C Hamano <redacted>
Felipe Contreras [Thu, 9 May 2013 01:16:56 +0000 (20:16 -0500)]
transport-helper: trivial style cleanup
Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
Paul Walmsley [Fri, 3 May 2013 23:10:18 +0000 (00:10 +0100)]
git-svn: added an --include-path flag
The SVN::Fetcher module is now able to filter for inclusion as well
as exclusion (as used by --ignore-path). Also added tests, documentation
changes and git completion script.
If you have an SVN repository with many top level directories and you
only want a git-svn clone of some of them then using --ignore-path is
difficult as it requires a very long regexp. In this case it's much
easier to filter for inclusion.
[ew: remove trailing whitespace]
Signed-off-by: Paul Walmsley <redacted>
Signed-off-by: Eric Wong <redacted>
Jonathan Nieder [Sun, 5 May 2013 07:50:33 +0000 (00:50 -0700)]
Git::SVN::*: add missing "NAME" section to perldoc
lexgrog(1) relies on the NAME section to find a manpage's subject's
name and description for easy access later using "man -k". Add the
section it expects.
Noticed using lintian.
Signed-off-by: Jonathan Nieder <redacted>
Signed-off-by: Eric Wong <redacted>
Michael Contreras [Sat, 30 Mar 2013 22:06:42 +0000 (18:06 -0400)]
git-svn: avoid self-referencing mergeinfo
When svn.pushmergeinfo is set, the target branch is included in the
mergeinfo if it was previously merged into one of the source branches.
SVN does not do this.
Remove merge target branch path from resulting mergeinfo when
svn.pushmergeinfo is set to better match the behavior of SVN. Update the
svn-mergeinfo-push test.
[ew: 80 columns]
Signed-off-by: Michael Contreras <redacted>
Reported-by: Avishay Lavie <redacted>
Acked-by: Eric Wong <redacted>
Junio C Hamano [Wed, 8 May 2013 05:50:05 +0000 (22:50 -0700)]
Update draft release notes for 1.8.3
Signed-off-by: Junio C Hamano <redacted>
Felipe Contreras [Tue, 7 May 2013 23:45:15 +0000 (18:45 -0500)]
remote-helpers: trivial cleanup
The comment was copied from hg-fast-export, not used anymore.
Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
Felipe Contreras [Tue, 7 May 2013 23:39:35 +0000 (18:39 -0500)]
remote-bzr: fix for disappeared revisions
It's possible that the previous tip goes away, we should not assume it's
always present. Fortunately we are only using it to calculate the
progress to display to the user, so only that needs to be fixed.
Also, add a test that triggers this issue.
Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Wed, 8 May 2013 01:24:31 +0000 (18:24 -0700)]
Merge git://github.com/git-l10n/git-po
* git://github.com/git-l10n/git-po:
l10n: zh_CN.po: translate 44 messages (2080t0f0u)
l10n: de.po: translate 44 new messages
l10n: Update Vietnamese translation (2080t0f0u)
l10n: Update Swedish translation (2080t0f0u)
l10n: git.pot: v1.8.3 round 2 (44 new, 12 removed)
Jiang Xin [Sat, 13 Apr 2013 02:02:43 +0000 (10:02 +0800)]
l10n: zh_CN.po: translate 44 messages (2080t0f0u)
Translate 44 new messages came from git.pot update in
c6bc7d4
(l10n: git.pot: v1.8.3 round 2 (44 new, 12 removed))
Signed-off-by: Jiang Xin <redacted>
Ralf Thielow [Tue, 30 Apr 2013 05:38:05 +0000 (07:38 +0200)]
l10n: de.po: translate 44 new messages
Translate 44 new messages came from git.pot update in
c6bc7d4 (l10n: git.pot: v1.8.3 round 2 (44 new, 12 removed)).
Signed-off-by: Ralf Thielow <redacted>
Acked-by: Thomas Rast <redacted>
Junio C Hamano [Tue, 7 May 2013 05:18:25 +0000 (22:18 -0700)]
Merge branch 'jk/merge-tree-added-identically'
* jk/merge-tree-added-identically:
merge-tree: handle directory/empty conflict correctly
John Keeping [Mon, 6 May 2013 15:20:54 +0000 (16:20 +0100)]
merge-tree: handle directory/empty conflict correctly
git-merge-tree causes a null pointer dereference when a directory
entry exists in only one or two of the three trees being compared with
no corresponding entry in the other tree(s).
When this happens, we want to handle the entry as a directory and not
attempt to mark it as a file merge. Do this by setting the entries bit
in the directory mask when the entry is missing or when it is a
directory, only performing the file comparison when we know that a file
entry exists.
Reported-by: Andreas Jacobsen <redacted>
Signed-off-by: John Keeping <redacted>
Tested-by: Andreas Jacobsen <redacted>
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Tue, 7 May 2013 05:16:26 +0000 (22:16 -0700)]
Merge branch 'fc/remote-bzr'
* fc/remote-bzr:
remote-bzr: avoid bad refs
remote-bzr: convert all unicode keys to str
remote-bzr: access branches only when needed
remote-bzr: delay peer branch usage
remote-bzr: iterate revisions properly
remote-bzr: improve progress reporting
remote-bzr: add option to specify branches
remote-bzr: add custom method to find branches
remote-bzr: improve author sanitazion
remote-bzr: add support for shared repo
remote-bzr: fix branch names
remote-bzr: add support for bzr repos
remote-bzr: use branch variable when appropriate
remote-bzr: fix partially pushed merge
remote-bzr: fixes for branch diverge
remote-bzr: add support to push merges
remote-bzr: always try to update the worktree
remote-bzr: fix order of locking in CustomTree
remote-bzr: delay blob fetching until the very end
remote-bzr: cleanup CustomTree
Felipe Contreras [Sat, 4 May 2013 00:31:07 +0000 (19:31 -0500)]
remote-bzr: avoid bad refs
Versions of fast-export before v1.8.2 throws a bad 'reset' commands
because of a behavior in transport-helper that is not even needed.
We should ignore them, otherwise we will treat them as branches and
fail.
This was fixed in v1.8.2, but some people use this script in older
versions of git.
Also, check if the ref was a tag, and skip it for now.
Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
Felipe Contreras [Sat, 4 May 2013 00:31:06 +0000 (19:31 -0500)]
remote-bzr: convert all unicode keys to str
Otherwise some versions of bazaar might barf.
Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Sun, 5 May 2013 18:12:12 +0000 (11:12 -0700)]
Merge branch 'fc/push-with-export-reporting-result'
* fc/push-with-export-reporting-result:
transport-helper: improve push messages
Felipe Contreras [Fri, 3 May 2013 23:41:59 +0000 (18:41 -0500)]
transport-helper: improve push messages
If there's already a remote-helper tracking ref, we can fetch the
SHA-1 to report proper push messages (as opposed to always reporting
[new branch]).
The remote-helper currently can specify the old SHA-1 to avoid this
problem, but there's no point in forcing all remote-helpers to be aware
of git commit ids; they should be able to be agnostic of them.
Signed-off-by: Felipe Contreras <redacted>
Reviewed-by: Jeff King <redacted>
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Fri, 3 May 2013 22:23:45 +0000 (15:23 -0700)]
Git 1.8.3-rc1
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Fri, 3 May 2013 22:18:04 +0000 (15:18 -0700)]
Merge branch 'tr/unpack-entry-use-after-free-fix'
* tr/unpack-entry-use-after-free-fix:
unpack_entry: avoid freeing objects in base cache
Junio C Hamano [Fri, 3 May 2013 22:17:38 +0000 (15:17 -0700)]
Sync with maint
* maint:
completion: zsh: don't override suffix on _detault
Documentation/git-commit: Typo under --edit
Junio C Hamano [Fri, 3 May 2013 22:12:38 +0000 (15:12 -0700)]
Merge branch 'tr/remote-tighten-commandline-parsing' into maint
* tr/remote-tighten-commandline-parsing:
remote: 'show' and 'prune' can take more than one remote
remote: check for superfluous arguments in 'git remote add'
remote: add a test for extra arguments, according to docs
Junio C Hamano [Fri, 3 May 2013 22:12:16 +0000 (15:12 -0700)]
Merge branch 'jn/glossary-revision' into maint
* jn/glossary-revision:
glossary: a revision is just a commit
Felipe Contreras [Fri, 3 May 2013 21:35:50 +0000 (16:35 -0500)]
completion: zsh: don't override suffix on _detault
zsh is smart enough to add the right suffix while completing, there's no
point in trying to do the same as bash.
Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
Anders Granskogen Bjørnstad [Thu, 2 May 2013 18:24:15 +0000 (20:24 +0200)]
Documentation/git-commit: Typo under --edit
-C takes a commit object, not a file.
Signed-off-by: Anders Granskogen Bjørnstad <redacted>
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Wed, 1 May 2013 22:32:24 +0000 (15:32 -0700)]
Update draft release notes to 1.8.3
Signed-off-by: Junio C Hamano <redacted>
Marc Branchaud [Mon, 29 Apr 2013 19:15:04 +0000 (15:15 -0400)]
Fix grammar in the 1.8.3 release notes.
Signed-off-by: Marc Branchaud <redacted>
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Wed, 1 May 2013 22:24:15 +0000 (15:24 -0700)]
Merge branch 'hb/git-pm-tempfile'
* hb/git-pm-tempfile:
Git.pm: call tempfile from File::Temp as a regular function
Junio C Hamano [Wed, 1 May 2013 22:24:08 +0000 (15:24 -0700)]
Merge branch 'rs/pp-user-info-without-extra-allocation'
* rs/pp-user-info-without-extra-allocation:
pretty: remove intermediate strbufs from pp_user_info()
pretty: simplify output line length calculation in pp_user_info()
pretty: simplify input line length calculation in pp_user_info()
Junio C Hamano [Wed, 1 May 2013 22:24:01 +0000 (15:24 -0700)]
Merge branch 'tr/remote-tighten-commandline-parsing'
* tr/remote-tighten-commandline-parsing:
remote: 'show' and 'prune' can take more than one remote
remote: check for superfluous arguments in 'git remote add'
remote: add a test for extra arguments, according to docs
Junio C Hamano [Wed, 1 May 2013 22:23:56 +0000 (15:23 -0700)]
Merge branch 'zk/prompt-rebase-step'
* zk/prompt-rebase-step:
bash-prompt.sh: show where rebase is at when stopped
Jiang Xin [Wed, 1 May 2013 11:49:18 +0000 (19:49 +0800)]
Merge remote-tracking branch 'vi-vnwildman/master'
* vi-vnwildman/master:
l10n: Update Vietnamese translation (2080t0f0u)
Tran Ngoc Quan [Wed, 1 May 2013 07:29:03 +0000 (14:29 +0700)]
l10n: Update Vietnamese translation (2080t0f0u)
Signed-off-by: Tran Ngoc Quan <redacted>
Felipe Contreras [Wed, 1 May 2013 01:10:10 +0000 (20:10 -0500)]
remote-bzr: access branches only when needed
Bazaar doesn't seem to be tested for multiple usage of branches, so
resources seem to be leaked all over. Let's try to minimize this by
accessing the Branch objects only when needed.
Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
Felipe Contreras [Wed, 1 May 2013 01:10:09 +0000 (20:10 -0500)]
remote-bzr: delay peer branch usage
So it doesn't time out.
Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
Felipe Contreras [Wed, 1 May 2013 01:10:08 +0000 (20:10 -0500)]
remote-bzr: iterate revisions properly
This way we don't need to store the list of all the revisions, which
doesn't seem to be very memory efficient with bazaar's design, for
whatever reason.
Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
Felipe Contreras [Wed, 1 May 2013 01:10:07 +0000 (20:10 -0500)]
remote-bzr: improve progress reporting
No need to manually count the revisions, and also, this would help to
iterate more properly.
Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
Felipe Contreras [Wed, 1 May 2013 01:10:06 +0000 (20:10 -0500)]
remote-bzr: add option to specify branches
We might not want all the branches. And branch handling in bazaar is
rather tricky, so it's safer to simply specify them.
Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
Felipe Contreras [Wed, 1 May 2013 01:10:05 +0000 (20:10 -0500)]
remote-bzr: add custom method to find branches
The official method is incredibly inefficient and slow.
Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
Felipe Contreras [Wed, 1 May 2013 01:10:04 +0000 (20:10 -0500)]
remote-bzr: improve author sanitazion
So that we don't end up with '<None>', and also synchronize it with the
one from remote-hg.
Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
Felipe Contreras [Wed, 1 May 2013 01:10:03 +0000 (20:10 -0500)]
remote-bzr: add support for shared repo
This way all the remotes share the same data, so adding multiple
remotes, or renaming them doesn't create extra overhead.
Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
Felipe Contreras [Wed, 1 May 2013 01:10:02 +0000 (20:10 -0500)]
remote-bzr: fix branch names
When branches have '/' in their name (aka. sub-branches), bazaar seems
to choke while creating the new directory.
Also, git cannot have both 'foo' and 'foo/bar'.
So let's replace slashes with a plus sign.
Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
Felipe Contreras [Wed, 1 May 2013 01:10:01 +0000 (20:10 -0500)]
remote-bzr: add support for bzr repos
In bazaar, a repository can contain multiple branches, and previously we
were supporting only one branch at a time. Now we fetch them all.
Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
Felipe Contreras [Wed, 1 May 2013 01:10:00 +0000 (20:10 -0500)]
remote-bzr: use branch variable when appropriate
There should be no functional changes. Basically we want to reserve the
'repo' variable.
Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
Felipe Contreras [Wed, 1 May 2013 01:09:59 +0000 (20:09 -0500)]
remote-bzr: fix partially pushed merge
If part of the merge was already pushed, we don't have the blob_marks
available, however, the commits are already stored in bazaar, so we can
use the revision_tree to fetch the contents.
We want to do this only when there's no other option.
There's no easy way to test this.
Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
Felipe Contreras [Wed, 1 May 2013 01:09:58 +0000 (20:09 -0500)]
remote-bzr: fixes for branch diverge
If the branches diverge we want to reset the pointer to where the remote
actually is. Since we can access remote branches just as easily as local
ones, let's do so.
Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
Felipe Contreras [Wed, 1 May 2013 01:09:57 +0000 (20:09 -0500)]
remote-bzr: add support to push merges
In order to do that, we need to store the marks of every file, so that
they can be fetched when needed. Unfortunately we can't tell bazaar that
nothing changed, we need to send the data so that it can figure it out
by itself.
And since it will be requesting a bunch of information by the file_id,
it's better to have a helper dict (rev_files), so that we can fetch it
quickly.
Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
Felipe Contreras [Wed, 1 May 2013 01:09:56 +0000 (20:09 -0500)]
remote-bzr: always try to update the worktree
And fail properly when we can't.
Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
Felipe Contreras [Wed, 1 May 2013 01:09:55 +0000 (20:09 -0500)]
remote-bzr: fix order of locking in CustomTree
It doesn't seem to make any difference, but revision_tree() requires a
lock.
Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
Felipe Contreras [Wed, 1 May 2013 01:09:54 +0000 (20:09 -0500)]
remote-bzr: delay blob fetching until the very end
Might be more efficient, but the real reason to use the marks will be
revealed in upcoming patches.
Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
Felipe Contreras [Wed, 1 May 2013 01:09:53 +0000 (20:09 -0500)]
remote-bzr: cleanup CustomTree
This code was not used at all.
Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
Thomas Rast [Tue, 30 Apr 2013 12:53:06 +0000 (14:53 +0200)]
unpack_entry: avoid freeing objects in base cache
In the !delta_data error path of unpack_entry(), we run free(base).
This became a window for use-after-free() in
abe601b (sha1_file:
remove recursion in unpack_entry, 2013-03-27), as follows:
Before
abe601b, we got the 'base' from cache_or_unpack_entry(..., 0);
keep_cache=0 tells it to also remove that entry. So the 'base' is at
this point not cached, and freeing it in the error path is the right
thing.
After
abe601b, the structure changed: we use a three-phase approach
where phase 1 finds the innermost base or a base that is already in
the cache. In phase 3 we therefore know that all bases we unpack are
not part of the delta cache yet. (Observe that we pop from the cache
in phase 1, so this is also true for the very first base.) So we make
no further attempts to look up the bases in the cache, and just call
add_delta_base_cache() on every base object we have assembled.
But the !delta_data error path remained unchanged, and now calls
free() on a base that has already been entered in the cache. This
means that there is a use-after-free if we later use the same base
again.
So remove that free(); we are still going to use that data.
Reported-by: Nguyễn Thái Ngọc Duy <redacted>
Signed-off-by: Thomas Rast <redacted>
Signed-off-by: Junio C Hamano <redacted>
Peter Krefting [Tue, 30 Apr 2013 11:30:21 +0000 (12:30 +0100)]
l10n: Update Swedish translation (2080t0f0u)
Signed-off-by: Peter Krefting <redacted>
Jiang Xin [Tue, 30 Apr 2013 00:31:19 +0000 (08:31 +0800)]
l10n: git.pot: v1.8.3 round 2 (44 new, 12 removed)
Generate po/git.pot from v1.8.3-rc0-19-g7e6a0 for git v1.8.3
l10n round 2.
Signed-off-by: Jiang Xin <redacted>
Ramkumar Ramachandra [Mon, 29 Apr 2013 12:49:41 +0000 (18:19 +0530)]
git-completion.bash: add remote.pushdefault to config list
224c2171 (remote.c: introduce remote.pushdefault, 2013-04-02)
introduced the remote.pushdefault configuration variable, but forgot
to teach git-completion.bash about it. Fix this.
Signed-off-by: Ramkumar Ramachandra <redacted>
Signed-off-by: Junio C Hamano <redacted>
Ramkumar Ramachandra [Mon, 29 Apr 2013 12:49:40 +0000 (18:19 +0530)]
git-completion.bash: add branch.*.pushremote to config list
9f765ce (remote.c: introduce branch.<name>.pushremote, 2013-04-02)
introduced the configuration variable branch.*.pushremote, but forgot
to teach git-completion.bash about it. Fix this.
Signed-off-by: Ramkumar Ramachandra <redacted>
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Mon, 29 Apr 2013 16:57:38 +0000 (09:57 -0700)]
Merge branch 'maint'
* maint:
complete: zsh: use zsh completion for the main cmd
complete: zsh: trivial simplification
git-completion.bash: complete branch.*.rebase as boolean
git-completion.bash: add diff.submodule to config list
git-completion.bash: lexical sorting for diff.statGraphWidth
Junio C Hamano [Mon, 29 Apr 2013 16:52:18 +0000 (09:52 -0700)]
Merge branch 'fc/zsh-completion' into maint
* fc/zsh-completion:
complete: zsh: use zsh completion for the main cmd
complete: zsh: trivial simplification
Felipe Contreras [Sat, 27 Apr 2013 20:34:06 +0000 (15:34 -0500)]
complete: zsh: use zsh completion for the main cmd
So that we can have a nice zsh completion output:
% git <tab>
add -- add file contents to the index
bisect -- find by binary search the change that introduced a bug
branch -- list, create, or delete branches
checkout -- checkout a branch or paths to the working tree
clone -- clone a repository into a new directory
commit -- record changes to the repository
diff -- show changes between commits, commit and working tree, etc
fetch -- download objects and refs from another repository
grep -- print lines matching a pattern
init -- create an empty Git repository or reinitialize an existing one
log -- show commit logs
merge -- join two or more development histories together
mv -- move or rename a file, a directory, or a symlink
pull -- fetch from and merge with another repository or a local branch
push -- update remote refs along with associated objects
rebase -- forward-port local commits to the updated upstream head
reset -- reset current HEAD to the specified state
rm -- remove files from the working tree and from the index
show -- show various types of objects
status -- show the working tree status
tag -- create, list, delete or verify a tag object signed with GPG
And other niceties, like 'git --git-dir=<tab>' showing only directories.
For the rest, the bash completion stuff is still used.
Also, add my copyright, since this more than a thin wrapper.
Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
Felipe Contreras [Sat, 27 Apr 2013 20:34:05 +0000 (15:34 -0500)]
complete: zsh: trivial simplification
There should be no functional changes.
The only reason I wrapped this code around a sub-function is because zsh
did the same in it's bashcompinit script in order to declare the special
variable 'words' as hidden, but only in this context.
There's no need for that any more since we access __git_main directly,
so 'words' is not modified, so there's no need for the sub-function.
In zsh mode the array indexes are different though.
Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
Ramkumar Ramachandra [Mon, 29 Apr 2013 12:49:39 +0000 (18:19 +0530)]
git-completion.bash: complete branch.*.rebase as boolean
6fac1b83 (completion: add missing config variables, 2009-06-29) added
"rebase" to the list of completions for "branch.*.*", but forgot to
specify completions for the values that this configuration variable
can take (namely "false" and "true"). Fix this.
Signed-off-by: Ramkumar Ramachandra <redacted>
Signed-off-by: Junio C Hamano <redacted>
Ramkumar Ramachandra [Mon, 29 Apr 2013 12:49:38 +0000 (18:19 +0530)]
git-completion.bash: add diff.submodule to config list
c47ef57 (diff: introduce diff.submodule configuration variable,
2012-11-13) introduced the diff.submodule configuration variable, but
forgot to teach git-completion.bash about it. Fix this.
Signed-off-by: Ramkumar Ramachandra <redacted>
Signed-off-by: Junio C Hamano <redacted>
Ramkumar Ramachandra [Mon, 29 Apr 2013 12:49:37 +0000 (18:19 +0530)]
git-completion.bash: lexical sorting for diff.statGraphWidth
df44483a (diff --stat: add config option to limit graph width,
2012-03-01) added the option diff.startGraphWidth to the list of
configuration variables in git-completion.bash, but failed to notice
that the list is sorted alphabetically. Move it to its rightful place
in the list.
Signed-off-by: Ramkumar Ramachandra <redacted>
Signed-off-by: Junio C Hamano <redacted>
H. Merijn Brand [Mon, 29 Apr 2013 08:09:57 +0000 (01:09 -0700)]
Git.pm: call tempfile from File::Temp as a regular function
We call File::Temp's "tempfile" function as a class method, but it was
never designed to be called this way. Older versions seemed to
tolerate it, but as of File::Temp 0.23, it blows up like this:
$ git svn fetch
'tempfile' can't be called as a method at .../Git.pm line 1117.
Fix it by calling it as a regular function, just inside the File::Temp
namespace.
Signed-off-by: H. Merijn Brand <redacted>
Helped-by: Jeff King <redacted>
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Sun, 28 Apr 2013 21:47:24 +0000 (14:47 -0700)]
Merge branch 'maint'
* maint:
documentation: trivial whitespace cleanups
t/Makefile: remove smoke test targets
Felipe Contreras [Sat, 27 Apr 2013 22:00:07 +0000 (17:00 -0500)]
documentation: trivial whitespace cleanups
Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>
John Keeping [Fri, 26 Apr 2013 17:58:24 +0000 (18:58 +0100)]
t/Makefile: remove smoke test targets
Commit
d24fbca (Remove Git's support for smoke testing - 2011-12-23)
removed the smoke test support from the test suite but it was
re-added by commit
342e9ef (Introduce a performance testing
framework - 2012-02-17). This appears to be the result of a
mis-rebase, since re-adding the smoke testing infrastructure does
not relate to the subject of that commit.
The current 'smoke' target is broken since the 'harness' script it
uses no longer exists, so just reapply this section of commit
d24fbca
and remove all of the smoke testing section in the makefile.
Signed-off-by: John Keeping <redacted>
Acked-by: Thomas Rast <redacted>
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Sun, 28 Apr 2013 19:10:03 +0000 (12:10 -0700)]
Merge branch 'nd/pretty-formats'
* nd/pretty-formats:
pretty: Fix bug in truncation support for %>, %< and %><
Ramsay Jones [Sat, 27 Apr 2013 19:43:36 +0000 (20:43 +0100)]
pretty: Fix bug in truncation support for %>, %< and %><
Some systems experience failures in t4205-*.sh (tests 18-20, 27)
which all relate to the use of truncation with the %< padding
placeholder. This capability was added in the commit
a7f01c6b
("pretty: support truncating in %>, %< and %><", 19-04-2013).
The truncation support was implemented with the assistance of a
new strbuf function (strbuf_utf8_replace). This function contains
the following code:
strbuf_attach(sb_src, strbuf_detach(&sb_dst, NULL),
sb_dst.len, sb_dst.alloc);
Unfortunately, this code is subject to unspecified behaviour. In
particular, the order of evaluation of the argument expressions
(along with the associated side effects) is not specified by the
C standard. Note that the second argument expression is a call to
strbuf_detach() which, as a side effect, sets the 'len' and 'alloc'
fields of the sb_dst argument to zero. Depending on the order of
evaluation of the argument expressions to the strbuf_attach call,
this can lead to assigning an empty string to 'sb_src'.
In order to remove the undesired behaviour, we replace the above
line of code with:
strbuf_swap(sb_src, &sb_dst);
strbuf_release(&sb_dst);
which achieves the desired effect without provoking unspecified
behaviour.
Signed-off-by: Ramsay Jones <redacted>
Acked-by: Duy Nguyen <redacted>
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Sun, 28 Apr 2013 18:57:54 +0000 (11:57 -0700)]
Merge branch 'jk/check-corrupt-objects-carefully'
* jk/check-corrupt-objects-carefully:
clone: Make the 'junk_mode' symbol a file static
Ramsay Jones [Sat, 27 Apr 2013 18:39:04 +0000 (19:39 +0100)]
clone: Make the 'junk_mode' symbol a file static
Sparse issues an "'junk_mode' not declared. Should it be static?"
warning. In order to suppress the warning, since this symbol does
not need more than file visibility, we simply add the static
modifier to its declaration.
Signed-off-by: Ramsay Jones <redacted>
Acked-by: Jeff King <redacted>
Signed-off-by: Junio C Hamano <redacted>
Junio C Hamano [Sun, 28 Apr 2013 18:53:57 +0000 (11:53 -0700)]
Merge branch 'jk/merge-tree-added-identically'
off-by-one fix.
* jk/merge-tree-added-identically:
merge-tree: fix typo in "both changed identically"
John Keeping [Sat, 27 Apr 2013 13:40:33 +0000 (14:40 +0100)]
merge-tree: fix typo in "both changed identically"
Commit
aacecc3 (merge-tree: don't print entries that match "local" -
2013-04-07) had a typo causing the "same in both" check to be incorrect
and check if both the base and "their" versions are removed instead of
checking that both the "our" and "their" versions are removed. Fix
this.
Reported-by: René Scharfe <redacted>
Test-written-by: René Scharfe <redacted>
Signed-off-by: John Keeping <redacted>
Signed-off-by: Junio C Hamano <redacted>
Felipe Contreras [Sat, 27 Apr 2013 20:17:44 +0000 (15:17 -0500)]
completion: add missing format-patch options
Signed-off-by: Felipe Contreras <redacted>
Signed-off-by: Junio C Hamano <redacted>