* GIT 0.99.6
@ 2005-09-08 0:08 Junio C Hamano
2005-09-08 22:14 ` Tool renames and 'ls-files -t' output Junio C Hamano
` (3 more replies)
0 siblings, 4 replies; 28+ messages in thread
From: Junio C Hamano @ 2005-09-08 0:08 UTC (permalink / raw)
To: git
Highlights
==========
* Documentation is in much better shape. Thanks everybody.
* Two grave bugs in 'git fetch' were caught and fixed. One is "Fix
fetching of tags", the other is "Fix pulling into the same branch.".
* We have archimport (unfortunately undocumented yet), and
cvsimport is being improved.
* Revert, rebase and cherry-pick are done using three-way merge,
not a straight patch application.
* 'git commit' should be a bit easier to use than before in
initial commits and merge commits.
* 'git applymbox' is a bit more accomodating and it should be
easier to handle MIME patches than before.
* As usual, comes with more recent gitk.
Better merge algorithms and the infrastructure are being worked
on by Daniel and Fredrik; they are not in this release yet.
What to expect after 0.99.6
===========================
This is written in a form of to-do list for me, so if I say
"accept patch", it means I do not currently plan to do that
myself. People interested in seeing it materialize please take
a hint. The latest copy of this document is found at
http://kernel.org/git/?p=git/git.git;a=blob;hb=todo;f=TODO
Tool Renames Plan
-----------------
- All non-binary commands will lose -script suffix in
$(bindir). The source to git-foo will be either git-foo.sh
or git-foo.perl in the source tree, and the documentation
will be in Documentation/git-foo.txt.
- The commands whose names have 'cache' to mean 'index file'
will get 'cache' in their names replaced with 'index'. For
git-fsck-cache and git-convert-cache, 'cache' will be
replaced with 'objects'.
- The commit walkers will have 'pull' in their names replaced
with 'fetch'. 'git-ssh-push' will become 'git-ssh-upload'.
- We continue to follow the convention to name the C source
file that contains the main program of 'git-foo' command
'foo.c'. That means we will have 'fsck-objects.c', for
example.
- At this moment, I am not planning to rename the symbols used
in programs, nor any library sources. "cache.h" will stay
"cache.h", so does "read-cache.c". "struct cache_entry" and
"ce_match_stat()" will keep their names. We _might_ want to
rename them in later rounds but not right now.
- In 0.99.7, all renamed commands will have symbolic links in
$(bindir) so that old names continue to work. These backward
compatible symlinks will not be present in documentation,
though. Especially, the main documentation, git(7) will talk
about the new names. Old environment names defined in
gitenv() will also be removed in this release.
Tentatively we aim to do this on Sep 17th.
- In 0.99.8, we do not install these backward compatible
symbolic links in $(bindir) anymore. The Makefile will have
a target to remove old symlinks from $(DESTDIR)$(bindir) you
can run manually to help you clean things up.
The timeframe for this is around Oct 1st, but I could be
talked into delaying the symlink removal if Porcelain people
find this schedule too tight.
Documentation
-------------
* Accept patches from people who actually have done CVS
migration and update the cvs-migration documentation.
Link the documentation from the main git.txt page.
* Accept patches from people who were hit by shiny blue bat to
update the SubmittingPatches [ONGOING].
* Talk about using rsync just once at the beginning when
initializing a remote repository so that local packs do not
need to be expanded. I personally do not think we need tool
support for this (but see below about optimized cloning).
* Maybe update tutorial with a toy project that involves two or
three developers..
* Update tutorial to cover setting up repository hooks to do
common tasks.
* Accept patches to finish missing docs.
Technical (heavier)
-------------------
* Tony Luck reported an unfortunate glitch in the 3-way merge.
Encourage discussions to come up with a not-so-expensive way
to catch the kind of ambiguities that led to his misery.
[Daniel's patch looks quite promising, so is the one from
Fredrik.]
* HPA has two projects, klibc and klibc-kbuild, that have large
set of overlapping files in different paths (i.e. one has many
renames from the other). There currently is no way for git to
help keep these two trees in sync, merging criss-cross between
them. The merge logic should be able to take advantage of
rename/copy detection smarts git-diff-* family has. Linus,
me, and Daniel outlined a smarter merge strategy for this.
Try them out.
* To make it easier to experiment with different merge
strategies, make git-merge driver that will run merge backends
for the best merge [Outlined the idea; just do it].
* We might want to optimize cloning with GIT native transport
not to explode the pack, and store it in objects/pack instead.
We would need a tool to generate an idx file out of a pack
file for this. Also this itself may turn out to be a bad
idea, making the set of packs in repositories everybody has
different from each other.
* Maybe a pack optimizer. I am not convinced that packing all
objects into a single pack and removing all the existing panck
is the right way to go, since that would work against people
who already have those packs.
* Maybe an Emacs VC backend.
Technical (milder)
------------------
* Tool renames [STARTED].
* Have Daniel's read-tree graduate from "pu" after plugging leaks.
* Implement a merge backend using Daniel's read-tree.
* Accept Fredrik merge after renaming it (I want to name the
driver 'git merge'). Suggest where to place *.py stuff --
probably in $(share)/git-core/ and add Makefile entry for
installation.
* Encourage concrete proposals to commit log message templates
we discussed some time ago.
* Bug Martin for archimport script documentation.
* More portability. I dropped a SunOS patch on the floor by
somebody.
* Accept patches to cause "read-tree -u" delete a directory when
it makes it empty.
* Perhaps accept patches to introduce the concept of "patch flow
expressed as ref mappings" Josef has been advocating about.
* Perhaps accept patches to do undo/redo.
* Maybe grok PGP signed text/plain in applymbox as well.
* Perhaps a tool to revert a single file to pre-modification
state? git-cat-file blob `git-ls-files | grep foo` >foo or
git-cat-file blob `git-ls-tree HEAD foo` >foo? What should
the command be called? git-revert is taken so is
git-checkout.
* A tool to detect, show and prune already merged topic
branches.
* Enhance "git repack" to not always use --all; this would be
handy if the repository contains wagging heads like "pu" in
git.git repository.
* Internally split the project into non-doc and doc parts; add
an extra root for the doc part and merge from it; move the
internal doc source to a separate repository, like the +Meta
repository; experiment if this results in a reasonable
workflow, and document it in howto form if it does.
* Option to limit rename detection for more than N paths.
Technical (trivial)
-------------------
* Perhaps "git branch -d" to delete a branch.
* We would want test scripts for the relative directory path
stuff Linus has been working on. So far, the following
commands should be usable with relative directory paths:
update-cache
ls-files
diff-files
diff-cache
diff-tree
rev-list
rev-parse
* In a freashly created empty repository, `git fetch foo:bar`
works OK, but `git checkout bar` afterwards does not (missing
`.git/HEAD`).
^ permalink raw reply [flat|nested] 28+ messages in thread
* Tool renames and 'ls-files -t' output
2005-09-08 0:08 GIT 0.99.6 Junio C Hamano
@ 2005-09-08 22:14 ` Junio C Hamano
2005-09-09 9:20 ` Post 0.99.7 preperation patches Junio C Hamano
2005-09-11 7:02 ` RFC: s/git-merge-base/git-find-common-ancestor/g Yasushi SHOJI
2005-09-09 0:58 ` [RFC/Patch] Tool rename fallout fix Junio C Hamano
` (2 subsequent siblings)
3 siblings, 2 replies; 28+ messages in thread
From: Junio C Hamano @ 2005-09-08 22:14 UTC (permalink / raw)
To: git
The "master" branch post 0.99.6 already has the renamed tools
with backward compatibility symlinks. I'll be sending a
patch to address an issue raised by some people separately to
see what the list thinks, and also will attempt to send out a
patch for the Pasky and Catalin heads later this week. Also
I'll remove the ancient backward compatible environment variable
names from gitenv.c.
There were discussion on the tag 'git-ls-files -t' output uses.
I got a feeling that we might want to change them to match what
other tools give. Here is the proposed changes:
Meaning Current Updated
cached H .
unmerged M U
removed R D
other ? ?
killed K K
modified info unav. M
I may also be tempted to rename 'tag_removed' variable there to
'tag_deleted' for consistency.
Comments?
^ permalink raw reply [flat|nested] 28+ messages in thread
* [RFC/Patch] Tool rename fallout fix
2005-09-08 0:08 GIT 0.99.6 Junio C Hamano
2005-09-08 22:14 ` Tool renames and 'ls-files -t' output Junio C Hamano
@ 2005-09-09 0:58 ` Junio C Hamano
2005-09-17 16:43 ` No GIT 0.99.7 today Junio C Hamano
2005-09-18 23:37 ` [ANNOUNCE] GIT 0.99.7 Junio C Hamano
3 siblings, 0 replies; 28+ messages in thread
From: Junio C Hamano @ 2005-09-09 0:58 UTC (permalink / raw)
To: git
Immediately after I updated the "master" branch with the tool
renames, I got a complaint from somebody telling me that the
things do not work anymore without 'make install'.
Strictly speaking, git has never worked fully without
installation because 'git' wrapper looked for things in the same
directory as it was in, which meant that 'git applymbox' would
not have worked anyway (it was coming from tools/applymbox until
recently), but on the other hand it certainly is nice if we can
run most of the things immediately after building but before
installing.
This patch attempts to remedy it. What is helped the most is
that test scripts do not have to special case the scripts
anymore; obviously we do want to be able to run tests before
installing. A downside is that your working tree after a build
has a lot more files than before.
As a side effect, you can specify non-standard path your Perl is
installed, and you can explicitly say "#!/usr/local/bin/bash".
Comments?
---
cd /opt/packrat/playpen/public/in-place/git/git.junio/
git diff HEAD
diff --git a/Makefile b/Makefile
--- a/Makefile
+++ b/Makefile
@@ -142,6 +142,13 @@ ifeq ($(shell uname -s),SunOS)
PLATFORM_DEFINES += -DNO_GETDOMAINNAME=1
endif
+ifndef SHELL_PATH
+ SHELL_PATH = /bin/sh
+endif
+ifndef PERL_PATH
+ PERL_PATH = /usr/bin/perl
+endif
+
ifndef NO_OPENSSL
LIB_OBJS += epoch.o
OPENSSL_LIBSSL = -lssl
@@ -179,21 +186,32 @@ endif
DEFINES += '-DSHA1_HEADER=$(SHA1_HEADER)'
-SCRIPTS = $(SCRIPT_SH) $(SCRIPT_PERL) gitk
+SCRIPTS = $(patsubst %.sh,%,$(SCRIPT_SH)) \
+ $(patsubst %.perl,%,$(SCRIPT_PERL)) gitk
### Build rules
-all: $(PROGRAMS) git.sh
+all: $(PROGRAMS) $(SCRIPTS)
all:
$(MAKE) -C templates
-git.sh: git.sh.in Makefile
+git: git.sh Makefile
rm -f $@+ $@
- sed -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' <$@.in >$@+
+ sed -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' <$@.sh >$@+
chmod +x $@+
mv $@+ $@
+$(filter-out git,$(patsubst %.sh,%,$(SCRIPT_SH))) : % : %.sh
+ rm -f $@
+ sed -e '1s|#!.*/sh|#!$(SHELL_PATH)|' $@.sh >$@
+ chmod +x $@
+
+$(patsubst %.perl,%,$(SCRIPT_PERL)) : % : %.perl
+ rm -f $@
+ sed -e '1s|#!.*perl|#!$(PERL_PATH)|' $@.perl >$@
+ chmod +x $@
+
%.o: %.c
$(CC) -o $*.o -c $(ALL_CFLAGS) $<
%.o: %.S
@@ -250,19 +268,8 @@ check:
install: $(PROGRAMS) $(SCRIPTS)
$(INSTALL) -m755 -d $(DESTDIR)$(bindir)
- $(INSTALL) $(PROGRAMS) $(DESTDIR)$(bindir)
- @for s in $(SCRIPTS); \
- do \
- case "$$s" in \
- *.*) \
- e=`expr "$$s" : '\(.*\)\.[^.]*$$'` ;; \
- *) \
- e="$$s" ;; \
- esac && \
- echo ": install $$s $(DESTDIR)$(bindir)/$$e" && \
- $(INSTALL) $$s $(DESTDIR)$(bindir)/$$e || exit; \
- done
- $(INSTALL) git-revert.sh $(DESTDIR)$(bindir)/git-cherry-pick
+ $(INSTALL) $(PROGRAMS) $(SCRIPTS) $(DESTDIR)$(bindir)
+ $(INSTALL) git-revert $(DESTDIR)$(bindir)/git-cherry-pick
sh ./cmd-rename.sh $(DESTDIR)$(bindir)
$(MAKE) -C templates install
@@ -299,7 +306,8 @@ deb: dist
clean:
rm -f *.o mozilla-sha1/*.o ppc/*.o $(PROGRAMS) $(LIB_FILE)
- rm -f git-core.spec git.sh
+ rm -f $(filter-out gitk,$(SCRIPTS))
+ rm -f git-core.spec
rm -rf $(GIT_TARNAME)
rm -f $(GIT_TARNAME).tar.gz git-core_$(GIT_VERSION)-*.tar.gz
rm -f git-core_$(GIT_VERSION)-*.deb git-core_$(GIT_VERSION)-*.dsc
diff --git a/git.sh.in b/git.sh
similarity index 100%
rename from git.sh.in
rename to git.sh
diff --git a/t/t1005-read-tree-m-2way-emu23.sh b/t/t1005-read-tree-m-2way-emu23.sh
--- a/t/t1005-read-tree-m-2way-emu23.sh
+++ b/t/t1005-read-tree-m-2way-emu23.sh
@@ -25,7 +25,7 @@ In the test, these paths are used:
read_tree_twoway () {
git-read-tree --emu23 "$1" "$2" &&
git-ls-files --stage &&
- git-merge-index ../../git-merge-one-file.sh -a &&
+ git-merge-index git-merge-one-file -a &&
git-ls-files --stage
}
diff --git a/t/t3200-branch.sh b/t/t3200-branch.sh
--- a/t/t3200-branch.sh
+++ b/t/t3200-branch.sh
@@ -13,12 +13,12 @@ handled. Specifically, that a bogus bra
test_expect_success \
'prepare an trivial repository' \
'echo Hello > A &&
- ../../git-update-index --add A &&
- ../../git-commit.sh -m "Initial commit."'
+ git-update-index --add A &&
+ git-commit -m "Initial commit."'
test_expect_failure \
'git branch --help should return error code' \
- '../../git-branch.sh --help'
+ 'git-branch --help'
test_expect_failure \
'git branch --help should not have created a bogus branch' \
diff --git a/t/t5400-send-pack.sh b/t/t5400-send-pack.sh
--- a/t/t5400-send-pack.sh
+++ b/t/t5400-send-pack.sh
@@ -21,9 +21,9 @@ test_expect_success setup '
parent=$commit || return 1
done &&
echo "$commit" >.git/HEAD &&
- git-clone.sh -l ./. victim &&
+ git-clone -l ./. victim &&
cd victim &&
- git-log.sh &&
+ git-log &&
cd .. &&
echo $zero >.git/HEAD &&
parent=$zero &&
@@ -35,7 +35,7 @@ test_expect_success setup '
done &&
echo "$commit" >.git/HEAD &&
echo Rebase &&
- git-log.sh'
+ git-log'
test_expect_success \
'pushing rewound head should not barf but require --force' '
^ permalink raw reply [flat|nested] 28+ messages in thread
* Post 0.99.7 preperation patches
2005-09-08 22:14 ` Tool renames and 'ls-files -t' output Junio C Hamano
@ 2005-09-09 9:20 ` Junio C Hamano
2005-09-12 1:26 ` Petr Baudis
2005-09-11 7:02 ` RFC: s/git-merge-base/git-find-common-ancestor/g Yasushi SHOJI
1 sibling, 1 reply; 28+ messages in thread
From: Junio C Hamano @ 2005-09-09 9:20 UTC (permalink / raw)
To: Catalin Marinas, Petr Baudis; +Cc: git
Junio C Hamano <junkio@cox.net> writes:
> The "master" branch post 0.99.6 already has the renamed tools
> with backward compatibility symlinks. I'll be sending a
> patch to address an issue raised by some people separately to
> see what the list thinks, and also will attempt to send out a
> patch for the Pasky and Catalin heads later this week.
I've prepared these and will be sending them out separately to
you two, hoping they would help you prepare for post 0.99.7
changes. Note that 0.99.6 does not know about these new names,
the current "master" branch knows about both new and old names,
so will 0.99.7, and in 0.99.8 the old names will be removed, if
things go as planned.
Here is a small script that I used before auditing what it did
to your trees by running 'git diff' on its result.
------------
#!/bin/sh
git-ls-files |
xargs perl -i -p -e '
s/git-merge-one-file-script/git-merge-one-file/g;
s/git-count-objects-script/git-count-objects/g;
s/git-format-patch-script/git-format-patch/g;
s/git-parse-remote-script/git-parse-remote/g;
s/git-request-pull-script/git-request-pull/g;
s/git-cherry-pick-script/git-cherry-pick/g;
s/git-archimport-script/git-archimport/g;
s/git-send-email-script/git-send-email/g;
s/git-verify-tag-script/git-verify-tag/g;
s/git-cvsimport-script/git-cvsimport/g;
s/git-ls-remote-script/git-ls-remote/g;
s/git-checkout-script/git-checkout/g;
s/git-sh-setup-script/git-sh-setup/g;
s/git-octopus-script/git-octopus/g;
s/git-resolve-script/git-resolve/g;
s/git-checkout-cache/git-checkout-index/g;
s/git-bisect-script/git-bisect/g;
s/git-branch-script/git-branch/g;
s/git-commit-script/git-commit/g;
s/git-rebase-script/git-rebase/g;
s/git-relink-script/git-relink/g;
s/git-rename-script/git-rename/g;
s/git-repack-script/git-repack/g;
s/git-revert-script/git-revert/g;
s/git-status-script/git-status/g;
s/git-convert-cache/git-convert-objects/g;
s/git-clone-script/git-clone/g;
s/git-fetch-script/git-fetch/g;
s/git-prune-script/git-prune/g;
s/git-reset-script/git-reset/g;
s/git-update-cache/git-update-index/g;
s/git-diff-script/git-diff/g;
s/git-pull-script/git-pull/g;
s/git-push-script/git-push/g;
s/git-merge-cache/git-merge-index/g;
s/git-add-script/git-add/g;
s/git-log-script/git-log/g;
s/git-tag-script/git-tag/g;
s/git-local-pull/git-local-fetch/g;
s/git-diff-cache/git-diff-index/g;
s/git-fsck-cache/git-fsck-objects/g;
s/git-http-pull/git-http-fetch/g;
s/git-ssh-pull/git-ssh-fetch/g;
s/git-ssh-push/git-ssh-upload/g;
'
git-update-cache --refresh
^ permalink raw reply [flat|nested] 28+ messages in thread
* RFC: s/git-merge-base/git-find-common-ancestor/g
2005-09-08 22:14 ` Tool renames and 'ls-files -t' output Junio C Hamano
2005-09-09 9:20 ` Post 0.99.7 preperation patches Junio C Hamano
@ 2005-09-11 7:02 ` Yasushi SHOJI
2005-09-11 7:38 ` Junio C Hamano
1 sibling, 1 reply; 28+ messages in thread
From: Yasushi SHOJI @ 2005-09-11 7:02 UTC (permalink / raw)
To: git; +Cc: Junio C Hamano
At Thu, 08 Sep 2005 15:14:52 -0700,
Junio C Hamano wrote:
>
> The "master" branch post 0.99.6 already has the renamed tools
> with backward compatibility symlinks. I'll be sending a
> patch to address an issue raised by some people separately to
> see what the list thinks, and also will attempt to send out a
> patch for the Pasky and Catalin heads later this week. Also
> I'll remove the ancient backward compatible environment variable
> names from gitenv.c.
everything seems very consistent indeed, except one command:
git-merge-base
I've already got used to it. but, at first, the name gave me the
impression that it merge the current branch with given base point.
the current documentation says:
Finds as good a common ancestor as possible for a merge
so would it be better to rename it to:
git-find-common-ancestor
That's what the command does after all.
--
yashi
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: RFC: s/git-merge-base/git-find-common-ancestor/g
2005-09-11 7:02 ` RFC: s/git-merge-base/git-find-common-ancestor/g Yasushi SHOJI
@ 2005-09-11 7:38 ` Junio C Hamano
2005-09-11 8:40 ` [PATCH] Rename git-merge-base to git-find-merge-base Yasushi SHOJI
0 siblings, 1 reply; 28+ messages in thread
From: Junio C Hamano @ 2005-09-11 7:38 UTC (permalink / raw)
To: Yasushi SHOJI; +Cc: git
Yasushi SHOJI <yashi@atmark-techno.com> writes:
> I've already got used to it. but, at first, the name gave me the
> impression that it merge the current branch with given base point.
>
> the current documentation says:
>
> Finds as good a common ancestor as possible for a merge
>
> so would it be better to rename it to:
>
> git-find-common-ancestor
>
> That's what the command does after all.
It does not find just any common ancestor, but tries to find a
set of common ancestors that are good to be used as merge bases.
So git-find-merge-base _might_ be an acceptable rename, but
git-find-common-ancestor certainly isn't.
^ permalink raw reply [flat|nested] 28+ messages in thread
* [PATCH] Rename git-merge-base to git-find-merge-base
2005-09-11 7:38 ` Junio C Hamano
@ 2005-09-11 8:40 ` Yasushi SHOJI
0 siblings, 0 replies; 28+ messages in thread
From: Yasushi SHOJI @ 2005-09-11 8:40 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
Junio C Hamano wrote:
>
> Yasushi SHOJI <yashi@atmark-techno.com> writes:
>
> > I've already got used to it. but, at first, the name gave me the
> > impression that it merge the current branch with given base point.
> >
> > the current documentation says:
> >
> > Finds as good a common ancestor as possible for a merge
> >
> > so would it be better to rename it to:
> >
> > git-find-common-ancestor
> >
> > That's what the command does after all.
>
> It does not find just any common ancestor, but tries to find a
> set of common ancestors that are good to be used as merge bases.
> So git-find-merge-base _might_ be an acceptable rename, but
> git-find-common-ancestor certainly isn't.
ok. it certainly does't find all common ancestors for given sha1s.
how about renaming the command to git-find-merge-base as you suggested
and document what the merge base is?
attached patch does the rename only. haven't added "merge base" entry
to Documentation/git-find-merge-base.txt.
--
yashi
Rename git-merge-base to git-find-merge-base
The command is to _find_ merge base, not merge something with base.
Reflect what it does to its name.
Signed-off-by: Yasushi SHOJI <yashi@atmark-techno.com>
---
.gitignore | 2
Documentation/git-find-merge-base.txt | 34 +++++++
Documentation/git-merge-base.txt | 34 -------
Documentation/git-read-tree.txt | 2
Documentation/git-show-branch.txt | 2
Documentation/git.txt | 2
Makefile | 2
README | 2
find-merge-base.c | 171 +++++++++++++++++++++++++++++++++
git-archimport.perl | 4 -
git-fetch.sh | 2
git-merge-octopus.sh | 2
git-merge.sh | 2
git-octopus.sh | 2
git-resolve.sh | 4 -
gitk | 2
merge-base.c | 171 ---------------------------------
t/t4100/t-apply-1.patch | 2
t/t4100/t-apply-5.patch | 2
templates/hooks--update | 2
20 files changed, 223 insertions(+), 223 deletions(-)
create mode 100644 Documentation/git-find-merge-base.txt
delete mode 100644 Documentation/git-merge-base.txt
create mode 100644 find-merge-base.c
delete mode 100644 merge-base.c
2652b63c0dcd376f47e3985be26a3cef67c397c8
diff --git a/.gitignore b/.gitignore
--- a/.gitignore
+++ b/.gitignore
@@ -42,7 +42,7 @@ git-ls-tree
git-mailinfo
git-mailsplit
git-merge
-git-merge-base
+git-find-merge-base
git-merge-fredrik
git-merge-index
git-merge-octopus
diff --git a/Documentation/git-find-merge-base.txt b/Documentation/git-find-merge-base.txt
new file mode 100644
--- /dev/null
+++ b/Documentation/git-find-merge-base.txt
@@ -0,0 +1,34 @@
+git-find-merge-base(1)
+======================
+v0.1, May 2005
+
+NAME
+----
+git-find-merge-base - Finds as good a common ancestor as possible for a merge
+
+
+SYNOPSIS
+--------
+'git-find-merge-base' <commit> <commit>
+
+DESCRIPTION
+-----------
+"git-find-merge-base" finds as good a common ancestor as possible. Given a
+selection of equally good common ancestors it should not be relied on
+to decide in any particular way.
+
+The "git-find-merge-base" algorithm is still in flux - use the source...
+
+
+Author
+------
+Written by Linus Torvalds <torvalds@osdl.org>
+
+Documentation
+--------------
+Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
+
+GIT
+---
+Part of the link:git.html[git] suite
+
diff --git a/Documentation/git-merge-base.txt b/Documentation/git-merge-base.txt
deleted file mode 100644
--- a/Documentation/git-merge-base.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-git-merge-base(1)
-=================
-v0.1, May 2005
-
-NAME
-----
-git-merge-base - Finds as good a common ancestor as possible for a merge
-
-
-SYNOPSIS
---------
-'git-merge-base' <commit> <commit>
-
-DESCRIPTION
------------
-"git-merge-base" finds as good a common ancestor as possible. Given a
-selection of equally good common ancestors it should not be relied on
-to decide in any particular way.
-
-The "git-merge-base" algorithm is still in flux - use the source...
-
-
-Author
-------
-Written by Linus Torvalds <torvalds@osdl.org>
-
-Documentation
---------------
-Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
-
-GIT
----
-Part of the link:git.html[git] suite
-
diff --git a/Documentation/git-read-tree.txt b/Documentation/git-read-tree.txt
--- a/Documentation/git-read-tree.txt
+++ b/Documentation/git-read-tree.txt
@@ -239,7 +239,7 @@ some edits since. Three-way merge makes
added or modified cache entries since $JC, and if you haven't,
then does the right thing. So with the following sequence:
- $ git-read-tree -m -u `git-merge-base $JC $LT` $JC $LT
+ $ git-read-tree -m -u `git-find-merge-base $JC $LT` $JC $LT
$ git-merge-index git-merge-one-file -a
$ echo "Merge with Linus" | \
git-commit-tree `git-write-tree` -p $JC -p $LT
diff --git a/Documentation/git-show-branch.txt b/Documentation/git-show-branch.txt
--- a/Documentation/git-show-branch.txt
+++ b/Documentation/git-show-branch.txt
@@ -38,7 +38,7 @@ OPTIONS
--merge-base::
Instead of showing the commit list, just act like the
- 'git-merge-base -a' command, except that it can accept
+ 'git-find-merge-base -a' command, except that it can accept
more than two heads.
--independent::
diff --git a/Documentation/git.txt b/Documentation/git.txt
--- a/Documentation/git.txt
+++ b/Documentation/git.txt
@@ -131,7 +131,7 @@ link:git-ls-files.html[git-ls-files]::
link:git-ls-tree.html[git-ls-tree]::
Displays a tree object in human readable form
-link:git-merge-base.html[git-merge-base]::
+link:git-find-merge-base.html[git-find-merge-base]::
Finds as good a common ancestor as possible for a merge
link:git-rev-list.html[git-rev-list]::
diff --git a/Makefile b/Makefile
--- a/Makefile
+++ b/Makefile
@@ -98,7 +98,7 @@ PROGRAMS = \
git-diff-helper git-diff-index git-diff-stages \
git-diff-tree git-export git-fetch-pack git-fsck-objects \
git-hash-object git-init-db \
- git-local-fetch git-ls-files git-ls-tree git-merge-base \
+ git-local-fetch git-ls-files git-ls-tree git-find-merge-base \
git-merge-index git-mktag git-pack-objects git-patch-id \
git-peek-remote git-prune-packed git-read-tree \
git-receive-pack git-rev-list git-rev-parse \
diff --git a/README b/README
--- a/README
+++ b/README
@@ -445,7 +445,7 @@ state of the directory ("tree" object) a
To get the "base" for the merge, you first look up the common parent
of two commits with
- git-merge-base <commit1> <commit2>
+ git-find-merge-base <commit1> <commit2>
which will return you the commit they are both based on. You should
now look up the "tree" objects of those commits, which you can easily
diff --git a/find-merge-base.c b/find-merge-base.c
new file mode 100644
--- /dev/null
+++ b/find-merge-base.c
@@ -0,0 +1,171 @@
+#include <stdlib.h>
+#include "cache.h"
+#include "commit.h"
+
+#define PARENT1 1
+#define PARENT2 2
+#define UNINTERESTING 4
+
+static struct commit *interesting(struct commit_list *list)
+{
+ while (list) {
+ struct commit *commit = list->item;
+ list = list->next;
+ if (commit->object.flags & UNINTERESTING)
+ continue;
+ return commit;
+ }
+ return NULL;
+}
+
+/*
+ * A pathological example of how this thing works.
+ *
+ * Suppose we had this commit graph, where chronologically
+ * the timestamp on the commit are A <= B <= C <= D <= E <= F
+ * and we are trying to figure out the merge base for E and F
+ * commits.
+ *
+ * F
+ * / \
+ * E A D
+ * \ / /
+ * B /
+ * \ /
+ * C
+ *
+ * First we push E and F to list to be processed. E gets bit 1
+ * and F gets bit 2. The list becomes:
+ *
+ * list=F(2) E(1), result=empty
+ *
+ * Then we pop F, the newest commit, from the list. Its flag is 2.
+ * We scan its parents, mark them reachable from the side that F is
+ * reachable from, and push them to the list:
+ *
+ * list=E(1) D(2) A(2), result=empty
+ *
+ * Next pop E and do the same.
+ *
+ * list=D(2) B(1) A(2), result=empty
+ *
+ * Next pop D and do the same.
+ *
+ * list=C(2) B(1) A(2), result=empty
+ *
+ * Next pop C and do the same.
+ *
+ * list=B(1) A(2), result=empty
+ *
+ * Now it is B's turn. We mark its parent, C, reachable from B's side,
+ * and push it to the list:
+ *
+ * list=C(3) A(2), result=empty
+ *
+ * Now pop C and notice it has flags==3. It is placed on the result list,
+ * and the list now contains:
+ *
+ * list=A(2), result=C(3)
+ *
+ * We pop A and do the same.
+ *
+ * list=B(3), result=C(3)
+ *
+ * Next, we pop B and something very interesting happens. It has flags==3
+ * so it is also placed on the result list, and its parents are marked
+ * uninteresting, retroactively, and placed back on the list:
+ *
+ * list=C(7), result=C(7) B(3)
+ *
+ * Now, list does not have any interesting commit. So we find the newest
+ * commit from the result list that is not marked uninteresting. Which is
+ * commit B.
+ */
+
+static int show_all = 0;
+
+static int find_merge_base(struct commit *rev1, struct commit *rev2)
+{
+ struct commit_list *list = NULL;
+ struct commit_list *result = NULL;
+
+ if (rev1 == rev2) {
+ printf("%s\n", sha1_to_hex(rev1->object.sha1));
+ return 0;
+ }
+
+ parse_commit(rev1);
+ parse_commit(rev2);
+
+ rev1->object.flags |= 1;
+ rev2->object.flags |= 2;
+ insert_by_date(rev1, &list);
+ insert_by_date(rev2, &list);
+
+ while (interesting(list)) {
+ struct commit *commit = list->item;
+ struct commit_list *tmp = list, *parents;
+ int flags = commit->object.flags & 7;
+
+ list = list->next;
+ free(tmp);
+ if (flags == 3) {
+ insert_by_date(commit, &result);
+
+ /* Mark parents of a found merge uninteresting */
+ flags |= UNINTERESTING;
+ }
+ parents = commit->parents;
+ while (parents) {
+ struct commit *p = parents->item;
+ parents = parents->next;
+ if ((p->object.flags & flags) == flags)
+ continue;
+ parse_commit(p);
+ p->object.flags |= flags;
+ insert_by_date(p, &list);
+ }
+ }
+
+ if (!result)
+ return 1;
+
+ while (result) {
+ struct commit *commit = result->item;
+ result = result->next;
+ if (commit->object.flags & UNINTERESTING)
+ continue;
+ printf("%s\n", sha1_to_hex(commit->object.sha1));
+ if (!show_all)
+ return 0;
+ commit->object.flags |= UNINTERESTING;
+ }
+ return 0;
+}
+
+static const char find_merge_base_usage[] =
+"git-find-merge-base [--all] <commit-id> <commit-id>";
+
+int main(int argc, char **argv)
+{
+ struct commit *rev1, *rev2;
+ unsigned char rev1key[20], rev2key[20];
+
+ while (1 < argc && argv[1][0] == '-') {
+ char *arg = argv[1];
+ if (!strcmp(arg, "-a") || !strcmp(arg, "--all"))
+ show_all = 1;
+ else
+ usage(find_merge_base_usage);
+ argc--; argv++;
+ }
+ if (argc != 3 ||
+ get_sha1(argv[1], rev1key) ||
+ get_sha1(argv[2], rev2key))
+ usage(find_merge_base_usage);
+ rev1 = lookup_commit_reference(rev1key);
+ rev2 = lookup_commit_reference(rev2key);
+ if (!rev1 || !rev2)
+ return 1;
+ return find_merge_base(rev1, rev2);
+}
diff --git a/git-archimport.perl b/git-archimport.perl
--- a/git-archimport.perl
+++ b/git-archimport.perl
@@ -640,7 +640,7 @@ sub find_parents {
#
# Identify what branches are merging into me
# and whether we are fully merged
- # git-merge-base <headsha> <headsha> should tell
+ # git-find-merge-base <headsha> <headsha> should tell
# me what the base of the merge should be
#
my $ps = shift;
@@ -674,7 +674,7 @@ sub find_parents {
# that branch.
#
foreach my $branch (keys %branches) {
- my $mergebase = `git-merge-base $branch $ps->{branch}`;
+ my $mergebase = `git-find-merge-base $branch $ps->{branch}`;
die "Cannot find merge base for $branch and $ps->{branch}" if $?;
chomp $mergebase;
diff --git a/git-fetch.sh b/git-fetch.sh
--- a/git-fetch.sh
+++ b/git-fetch.sh
@@ -113,7 +113,7 @@ fast_forward_local () {
if test -f "$GIT_DIR/$1"
then
local=$(git-rev-parse --verify "$1^0") &&
- mb=$(git-merge-base "$local" "$2") &&
+ mb=$(git-find-merge-base "$local" "$2") &&
case "$2,$mb" in
$local,*)
echo >&2 "* $1: same as $3"
diff --git a/git-merge-octopus.sh b/git-merge-octopus.sh
--- a/git-merge-octopus.sh
+++ b/git-merge-octopus.sh
@@ -42,7 +42,7 @@ CNT=1 ;# counting our head
NON_FF_MERGE=0
for SHA1 in $remotes
do
- common=$(git-merge-base $MRC $SHA1) ||
+ common=$(git-find-merge-base $MRC $SHA1) ||
die "Unable to find common commit with $SHA1"
if test "$common" = $SHA1
diff --git a/git-merge.sh b/git-merge.sh
--- a/git-merge.sh
+++ b/git-merge.sh
@@ -114,7 +114,7 @@ case "$#,$common" in
up_to_date=t
for remote
do
- common_one=$(git-merge-base $head $remote)
+ common_one=$(git-find-merge-base $head $remote)
if test "$common_one" != "$remote"
then
up_to_date=f
diff --git a/git-octopus.sh b/git-octopus.sh
--- a/git-octopus.sh
+++ b/git-octopus.sh
@@ -33,7 +33,7 @@ CNT=1 ;# counting our head
NON_FF_MERGE=0
while read SHA1 REPO
do
- common=$(git-merge-base $MRC $SHA1) ||
+ common=$(git-find-merge-base $MRC $SHA1) ||
die "Unable to find common commit with $SHA1 from $REPO"
if test "$common" = $SHA1
diff --git a/git-resolve.sh b/git-resolve.sh
--- a/git-resolve.sh
+++ b/git-resolve.sh
@@ -31,7 +31,7 @@ dropheads
echo $head > "$GIT_DIR"/ORIG_HEAD
echo $merge > "$GIT_DIR"/LAST_MERGE
-common=$(git-merge-base $head $merge)
+common=$(git-find-merge-base $head $merge)
if [ -z "$common" ]; then
die "Unable to find common commit between" $merge $head
fi
@@ -55,7 +55,7 @@ esac
# Find an optimum merge base if there are more than one candidates.
LF='
'
-common=$(git-merge-base -a $head $merge)
+common=$(git-find-merge-base -a $head $merge)
case "$common" in
?*"$LF"?*)
echo "Trying to find the optimum merge base."
diff --git a/gitk b/gitk
--- a/gitk
+++ b/gitk
@@ -2266,7 +2266,7 @@ proc findgca {ids} {
set gca $id
} else {
if {[catch {
- set gca [exec git-merge-base $gca $id]
+ set gca [exec git-find-merge-base $gca $id]
} err]} {
return {}
}
diff --git a/merge-base.c b/merge-base.c
deleted file mode 100644
--- a/merge-base.c
+++ /dev/null
@@ -1,171 +0,0 @@
-#include <stdlib.h>
-#include "cache.h"
-#include "commit.h"
-
-#define PARENT1 1
-#define PARENT2 2
-#define UNINTERESTING 4
-
-static struct commit *interesting(struct commit_list *list)
-{
- while (list) {
- struct commit *commit = list->item;
- list = list->next;
- if (commit->object.flags & UNINTERESTING)
- continue;
- return commit;
- }
- return NULL;
-}
-
-/*
- * A pathological example of how this thing works.
- *
- * Suppose we had this commit graph, where chronologically
- * the timestamp on the commit are A <= B <= C <= D <= E <= F
- * and we are trying to figure out the merge base for E and F
- * commits.
- *
- * F
- * / \
- * E A D
- * \ / /
- * B /
- * \ /
- * C
- *
- * First we push E and F to list to be processed. E gets bit 1
- * and F gets bit 2. The list becomes:
- *
- * list=F(2) E(1), result=empty
- *
- * Then we pop F, the newest commit, from the list. Its flag is 2.
- * We scan its parents, mark them reachable from the side that F is
- * reachable from, and push them to the list:
- *
- * list=E(1) D(2) A(2), result=empty
- *
- * Next pop E and do the same.
- *
- * list=D(2) B(1) A(2), result=empty
- *
- * Next pop D and do the same.
- *
- * list=C(2) B(1) A(2), result=empty
- *
- * Next pop C and do the same.
- *
- * list=B(1) A(2), result=empty
- *
- * Now it is B's turn. We mark its parent, C, reachable from B's side,
- * and push it to the list:
- *
- * list=C(3) A(2), result=empty
- *
- * Now pop C and notice it has flags==3. It is placed on the result list,
- * and the list now contains:
- *
- * list=A(2), result=C(3)
- *
- * We pop A and do the same.
- *
- * list=B(3), result=C(3)
- *
- * Next, we pop B and something very interesting happens. It has flags==3
- * so it is also placed on the result list, and its parents are marked
- * uninteresting, retroactively, and placed back on the list:
- *
- * list=C(7), result=C(7) B(3)
- *
- * Now, list does not have any interesting commit. So we find the newest
- * commit from the result list that is not marked uninteresting. Which is
- * commit B.
- */
-
-static int show_all = 0;
-
-static int merge_base(struct commit *rev1, struct commit *rev2)
-{
- struct commit_list *list = NULL;
- struct commit_list *result = NULL;
-
- if (rev1 == rev2) {
- printf("%s\n", sha1_to_hex(rev1->object.sha1));
- return 0;
- }
-
- parse_commit(rev1);
- parse_commit(rev2);
-
- rev1->object.flags |= 1;
- rev2->object.flags |= 2;
- insert_by_date(rev1, &list);
- insert_by_date(rev2, &list);
-
- while (interesting(list)) {
- struct commit *commit = list->item;
- struct commit_list *tmp = list, *parents;
- int flags = commit->object.flags & 7;
-
- list = list->next;
- free(tmp);
- if (flags == 3) {
- insert_by_date(commit, &result);
-
- /* Mark parents of a found merge uninteresting */
- flags |= UNINTERESTING;
- }
- parents = commit->parents;
- while (parents) {
- struct commit *p = parents->item;
- parents = parents->next;
- if ((p->object.flags & flags) == flags)
- continue;
- parse_commit(p);
- p->object.flags |= flags;
- insert_by_date(p, &list);
- }
- }
-
- if (!result)
- return 1;
-
- while (result) {
- struct commit *commit = result->item;
- result = result->next;
- if (commit->object.flags & UNINTERESTING)
- continue;
- printf("%s\n", sha1_to_hex(commit->object.sha1));
- if (!show_all)
- return 0;
- commit->object.flags |= UNINTERESTING;
- }
- return 0;
-}
-
-static const char merge_base_usage[] =
-"git-merge-base [--all] <commit-id> <commit-id>";
-
-int main(int argc, char **argv)
-{
- struct commit *rev1, *rev2;
- unsigned char rev1key[20], rev2key[20];
-
- while (1 < argc && argv[1][0] == '-') {
- char *arg = argv[1];
- if (!strcmp(arg, "-a") || !strcmp(arg, "--all"))
- show_all = 1;
- else
- usage(merge_base_usage);
- argc--; argv++;
- }
- if (argc != 3 ||
- get_sha1(argv[1], rev1key) ||
- get_sha1(argv[2], rev2key))
- usage(merge_base_usage);
- rev1 = lookup_commit_reference(rev1key);
- rev2 = lookup_commit_reference(rev2key);
- if (!rev1 || !rev2)
- return 1;
- return merge_base(rev1, rev2);
-}
diff --git a/t/t4100/t-apply-1.patch b/t/t4100/t-apply-1.patch
--- a/t/t4100/t-apply-1.patch
+++ b/t/t4100/t-apply-1.patch
@@ -92,7 +92,7 @@ diff --git a/Makefile b/Makefile
+++ b/Makefile
@@ -30,7 +30,7 @@ PROG= git-update-cache git-diff-files
git-checkout-cache git-diff-tree git-rev-tree git-ls-files \
- git-check-files git-ls-tree git-merge-base git-merge-cache \
+ git-check-files git-ls-tree git-find-merge-base git-merge-cache \
git-unpack-file git-export git-diff-cache git-convert-cache \
- git-http-pull git-rpush git-rpull git-rev-list git-mktag \
+ git-http-pull git-ssh-push git-ssh-pull git-rev-list git-mktag \
diff --git a/t/t4100/t-apply-5.patch b/t/t4100/t-apply-5.patch
--- a/t/t4100/t-apply-5.patch
+++ b/t/t4100/t-apply-5.patch
@@ -202,7 +202,7 @@ diff a/Makefile b/Makefile
+++ b/Makefile
@@ -30,7 +30,7 @@ PROG= git-update-cache git-diff-files
git-checkout-cache git-diff-tree git-rev-tree git-ls-files \
- git-check-files git-ls-tree git-merge-base git-merge-cache \
+ git-check-files git-ls-tree git-find-merge-base git-merge-cache \
git-unpack-file git-export git-diff-cache git-convert-cache \
- git-http-pull git-rpush git-rpull git-rev-list git-mktag \
+ git-http-pull git-ssh-push git-ssh-pull git-rev-list git-mktag \
diff --git a/templates/hooks--update b/templates/hooks--update
--- a/templates/hooks--update
+++ b/templates/hooks--update
@@ -15,7 +15,7 @@ then
echo "Created a new ref, with the following commits:"
git-rev-list --pretty "$3"
else
- $base=$(git-merge-base "$2" "$3")
+ $base=$(git-find-merge-base "$2" "$3")
case "$base" in
"$2")
echo "New commits:"
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: Post 0.99.7 preperation patches
2005-09-09 9:20 ` Post 0.99.7 preperation patches Junio C Hamano
@ 2005-09-12 1:26 ` Petr Baudis
0 siblings, 0 replies; 28+ messages in thread
From: Petr Baudis @ 2005-09-12 1:26 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Catalin Marinas, git
Dear diary, on Fri, Sep 09, 2005 at 11:20:53AM CEST, I got a letter
where Junio C Hamano <junkio@cox.net> told me that...
> Junio C Hamano <junkio@cox.net> writes:
>
> > The "master" branch post 0.99.6 already has the renamed tools
> > with backward compatibility symlinks. I'll be sending a
> > patch to address an issue raised by some people separately to
> > see what the list thinks, and also will attempt to send out a
> > patch for the Pasky and Catalin heads later this week.
>
> I've prepared these and will be sending them out separately to
> you two, hoping they would help you prepare for post 0.99.7
> changes. Note that 0.99.6 does not know about these new names,
> the current "master" branch knows about both new and old names,
> so will 0.99.7, and in 0.99.8 the old names will be removed, if
> things go as planned.
>
> Here is a small script that I used before auditing what it did
> to your trees by running 'git diff' on its result.
Thanks for the notification. I will do an auxiliary release right
after 0.99.7 is released.
--
Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
If you want the holes in your knowledge showing up try teaching
someone. -- Alan Cox
^ permalink raw reply [flat|nested] 28+ messages in thread
* No GIT 0.99.7 today
2005-09-08 0:08 GIT 0.99.6 Junio C Hamano
2005-09-08 22:14 ` Tool renames and 'ls-files -t' output Junio C Hamano
2005-09-09 0:58 ` [RFC/Patch] Tool rename fallout fix Junio C Hamano
@ 2005-09-17 16:43 ` Junio C Hamano
2005-09-18 23:37 ` [ANNOUNCE] GIT 0.99.7 Junio C Hamano
3 siblings, 0 replies; 28+ messages in thread
From: Junio C Hamano @ 2005-09-17 16:43 UTC (permalink / raw)
To: git
I was planning to do 0.99.7 today but I need to delay it for a
couple of days. I am expected to be offline for most of today.
^ permalink raw reply [flat|nested] 28+ messages in thread
* [ANNOUNCE] GIT 0.99.7
2005-09-08 0:08 GIT 0.99.6 Junio C Hamano
` (2 preceding siblings ...)
2005-09-17 16:43 ` No GIT 0.99.7 today Junio C Hamano
@ 2005-09-18 23:37 ` Junio C Hamano
2005-09-18 23:40 ` What to expect after " Junio C Hamano
` (2 more replies)
3 siblings, 3 replies; 28+ messages in thread
From: Junio C Hamano @ 2005-09-18 23:37 UTC (permalink / raw)
To: git; +Cc: linux-kernel
I am hoping that sending this out to the kernel list is not
considered too much of useless spamming, but I promise I
wouldn't do thit next time for 0.99.8, if I hear from somebody
not to.
Here comes GIT 0.99.7
--
Done in 0.99.7
==============
Organization
~~~~~~~~~~~~
Some commands and most scripts are renamed for consistency.
- We have an official standard terminology list [*1*]. To
match this, commands that operate on index files now have
'index' instead of 'cache' in their names, and ones that
download are called 'fetch' instead of 'pull'.
- We used to install most of the commands that happen to be
implemented as scripts as 'git-*-script', which was
cumbersome to remember and type unless you always used 'git'
wrapper. They lost '-script' suffix from their names.
For now, we install synonyms as symbolic links so that old
names continue to work, but they are planned to be removed in
0.99.8 (or later if there are enough objections on the list --
so far I have heard none).
Also ancient environment variables [*2*] are not supported
anymore.
New Features and Commands
~~~~~~~~~~~~~~~~~~~~~~~~~
Downloaders that are not fully git aware have been taught about
the mechanism to borrow objects from other repositories via
objects/info/alternates the server side may be using. 'git
fetch' and 'git pull' commands over rsync and http transport
should be able to handle such repositories [*3*].
People found interesting cases where the 'stupid' three-way
merge mechanism does the wrong thing without noticing. We have
two new merge algorithms by Daniel and Fredrik that attempt to
do better in such cases. A new 'git merge' command has been
introduced to make it easier to experiment with and choose among
different merge strategies. Note that 'git pull' still uses the
traditional three-way merge after downloading, but it is
expected to be switched to use 'git merge' sometime in the
future.
Importing from tla archives has been improved and documentated.
'git branch' command acquired '-d' flag to delete a branch that
has already been merged into the current branch.
'git bisect' command is easier to use by logging the earlier
good/bad choices and make it replayable.
'git repack' has -a' flag to pack the whole repository into a
single pack.
'git grep' is a new command to run grep on files 'git' knows
about.
Fixes
~~~~~
* 'git-diff-*' commands used to mark copy/rename incorrectly
when an (A,B) => (B,C) rename was made. We said the new B is
a copy of old A, not a rename of old A.
* When the user exported CDPATH into environment, 'cd' took
scripts to unexpected places. Unset it upfront to guard us.
* 'git format-patch' knows about 'git cherry' and skips patches
already merged upstream.
* hopefully plugged memory leak in diffcore-rename properly.
* commit walkers incorrectly assumed having a commit means we
have the whole history leading up to it -- which is not true
if the previous download was interrupted. As a safety
measure, we now only trust the commits that are pointed by the
existing refs.
* 'git rev-list' uses a lot less memory.
* The build should be a bit friendlier to Solaris and Darwin now.
* 'git ssh-{push,pull}' are friendlier to tcsh.
* http transport is nicer to caching proxies.
* 'git daemon' port is registered with IANA.
* Many documentation updates.
[Footnotes]
*1* http://www.kernel.org/pub/software/scm/git/docs/glossary.html
*2* Ancient environment variable names: SHA1_FILE_DIRECTORIES
AUTHOR_DATE AUTHOR_EMAIL AUTHOR_NAME COMMIT_AUTHOR_EMAIL
COMMIT_AUTHOR_NAME SHA1_FILE_DIRECTORY
*3* But not grafts.
^ permalink raw reply [flat|nested] 28+ messages in thread
* What to expect after GIT 0.99.7
2005-09-18 23:37 ` [ANNOUNCE] GIT 0.99.7 Junio C Hamano
@ 2005-09-18 23:40 ` Junio C Hamano
2005-09-19 1:30 ` Linus Torvalds
` (2 more replies)
2005-09-19 1:14 ` [ANNOUNCE] Cogito-0.15 Petr Baudis
2005-09-19 2:24 ` [ANNOUNCE] GIT 0.99.7 Nigel Cunningham
2 siblings, 3 replies; 28+ messages in thread
From: Junio C Hamano @ 2005-09-18 23:40 UTC (permalink / raw)
To: git
The GIT To-Do File
==================
The latest copy of this document is found at
http://kernel.org/git/?p=git/git.git;a=blob;hb=todo;f=TODO
Tool Renames Plan
=================
- All non-binary commands will lose -script suffix in
$(bindir). The source to git-foo will be either git-foo.sh
or git-foo.perl in the source tree, and the documentation
will be in Documentation/git-foo.txt.
- The commands whose names have 'cache' to mean 'index file'
will get 'cache' in their names replaced with 'index'. For
git-fsck-cache and git-convert-cache, 'cache' will be
replaced with 'objects'.
- The commit walkers will have 'pull' in their names replaced
with 'fetch'. 'git-ssh-push' will become 'git-ssh-upload'.
- We continue to follow the convention to name the C source
file that contains the main program of 'git-foo' command
'foo.c'. That means we will have 'fsck-objects.c', for
example.
- At this moment, I am not planning to rename the symbols used
in programs, nor any library sources. "cache.h" will stay
"cache.h", so does "read-cache.c". "struct cache_entry" and
"ce_match_stat()" will keep their names. We _might_ want to
rename them in later rounds but not right now.
- In 0.99.7, all renamed commands will have symbolic links in
$(bindir) so that old names continue to work. These backward
compatible names will not appear in documentation. The main
documentation, git(7) will talk about the new names but would
mention their old names as historical notes. Old environment
names defined in gitenv() will also be removed in this release.
- In 0.99.8, we do not install these backward compatible
symbolic links in $(bindir) anymore. The Makefile will have
a target to remove old symlinks from $(DESTDIR)$(bindir) you
can run manually to help you clean things up.
The timeframe for this is around Oct 1st, but I could be
talked into delaying the symlink removal if Porcelain people
find this schedule too tight.
What to expect after 0.99.7
===========================
This is written in a form of to-do list for me, so if I say
"accept patch", it means I do not currently plan to do that
myself. People interested in seeing it materialize please take
a hint.
Documentation
-------------
* Accept patches from people who actually have done CVS
migration and update the cvs-migration documentation.
Link the documentation from the main git.txt page.
* Accept patches from people who were hit by shiny blue bat to
update the SubmittingPatches.
* Talk about using rsync just once at the beginning when
initializing a remote repository so that local packs do not
need to be expanded. I personally do not think we need tool
support for this (but see below about optimized cloning).
* Maybe update tutorial with a toy project that involves two or
three developers..
* Update tutorial to cover setting up repository hooks to do
common tasks.
* Accept patches to finish missing docs.
Technical (heavier)
-------------------
* Tony Luck reported an unfortunate glitch in the 3-way merge.
Encourage discussions to come up with a not-so-expensive way
to catch the kind of ambiguities that led to his misery.
[Deathmatch between Daniel's and Fredrik's ongoing.]
* HPA has two projects, klibc and klibc-kbuild, that have large
set of overlapping files in different paths (i.e. one has many
renames from the other). There currently is no way for git to
help keep these two trees in sync, merging criss-cross between
them. The merge logic should be able to take advantage of
rename/copy detection smarts git-diff-* family has. Linus,
me, and Daniel outlined a smarter merge strategy for this.
Try them out.
* We might want to optimize cloning with GIT native transport
not to explode the pack, and store it in objects/pack instead.
We would need a tool to generate an idx file out of a pack
file for this. Also this itself may turn out to be a bad
idea, making the set of packs in repositories everybody has
different from each other.
* Libification. There are many places "run once" mentality is
ingrained in the management of basic data structures, which
need to be fixed.
* Maybe a pack optimizer.
* Maybe an Emacs VC backend.
Technical (milder)
------------------
* The recent commit walker safety patch may be too cautious and
appears to take forever when cloning. This may even be
infinitely looping in the code lifted from the old rev-list --
needs to be taken a look at [DONE INITIAL CUT].
* Encourage concrete proposals to commit log message templates
we discussed some time ago.
* Accept patches for more portability.
* strcasestr() in mailinfo. We may need compat/strcasestr.c;
this is bugging OpenBSD folks.
* Accept patches to cause "read-tree -u" delete a directory when
it makes it empty.
* Perhaps accept patches to introduce the concept of "patch flow
expressed as ref mappings" Josef has been advocating about.
* Perhaps accept patches to do undo/redo.
* Perhaps accept patch to optionally allow '--fuzz' in
'git-apply'.
* Allow 'git apply' to accept GNU diff 2.7 output that forgets
to say '\No newline' if both input ends with incomplete
lines.
* Maybe grok PGP signed text/plain in applymbox as well.
* Perhaps a tool to revert a single file to pre-modification
state? git-cat-file blob `git-ls-files | grep foo` >foo or
git-cat-file blob `git-ls-tree HEAD foo` >foo? What should
the command be called? git-revert is taken so is
git-checkout.
* Enhance "git repack" to not always use --all; this would be
handy if the repository contains wagging heads like "pu" in
git.git repository.
* Internally split the project into non-doc and doc parts; add
an extra root for the doc part and merge from it; move the
internal doc source to a separate repository, like the +Meta
repository; experiment if this results in a reasonable
workflow, and document it in howto form if it does.
* Make rebase restartable; instead of skipping what cannot be
automatically forward ported, leave the conflicts in the work
tree, have the user resolve it, and then restart from where it
left off.
* Output full path in the "git-rev-list --objects" output, not
just the basename, and see the improved clustering results in
better packing [Tried, but did not work out well].
* Remove obsolete commands [READY].
* Option to limit rename detection for more than N paths [READY].
* Option to show only status and name from diff [READY].
Technical (trivial)
-------------------
* 'git add --recursive'?
* 'git merge-projects'?
* 'git lost-and-found'? Link dangling commits found by
fsck-objects under $GIT_DIR/refs/lost-found/. Then
show-branch or gitk can be used to find any lost commit. [A
feeler patch sent out. Very underwhelming response X-<.]
Do not name it /lost+found/; that would probably confuse
things that mistake it a mount point (not our code but
somebody else's).
* Add simple globbing rules to git-show-branch so that I can
say 'git show-branch --heads "ko-*"' (ko-master, ko-pu, and
ko-rc are in refs/tags/).
* We would want test scripts for the relative directory path
stuff Linus has been working on. So far, the following
commands should be usable with relative directory paths:
git-update-index
git-ls-files
git-diff-files
git-diff-index
git-diff-tree
git-rev-list
git-rev-parse
* In a freashly created empty repository, `git fetch foo:bar`
works OK, but `git checkout bar` afterwards does not (missing
`.git/HEAD`).
^ permalink raw reply [flat|nested] 28+ messages in thread
* [ANNOUNCE] Cogito-0.15
2005-09-18 23:37 ` [ANNOUNCE] GIT 0.99.7 Junio C Hamano
2005-09-18 23:40 ` What to expect after " Junio C Hamano
@ 2005-09-19 1:14 ` Petr Baudis
2005-09-19 23:15 ` Pavel Machek
2005-09-19 2:24 ` [ANNOUNCE] GIT 0.99.7 Nigel Cunningham
2 siblings, 1 reply; 28+ messages in thread
From: Petr Baudis @ 2005-09-19 1:14 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git, linux-kernel
Hello,
this is the release of Cogito-0.15. It fixes several minor bugs, and
adds a feature or two. The most important thing though is that this
depends on Git-core-0.99.7 and uses the new command names. Everyone is
encouraged to upgrade at least to this Cogito version in the next few
days, since the older Cogito versions likely won't work with the future
Git-core releases.
To stay in sync with the Git terminology, Cogito also renames its
cg-pull to cg-fetch. Since this is a major naming change (I'm not too
happy about it, personally), cg-pull will stay aliased to cg-fetch for
at least one (likely two) next major Cogito releases (it also produces a
warning when invoked as cg-pull). In the more distant future, cg-pull
will slowly become the new name of cg-update, to make it confusing.
While at it, we also renamed the *-id scriptlets to cg-*-id. Other
notable stuff is cg-init respecting the ignore rules, and better UI for
cg-add wrt. directories (including cg-add -r support).
Now let's see what the usual bug-right-after-release (major release,
so a major bug?) will be this time.
Happy hacking,
--
Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
If you want the holes in your knowledge showing up try teaching
someone. -- Alan Cox
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: What to expect after GIT 0.99.7
2005-09-18 23:40 ` What to expect after " Junio C Hamano
@ 2005-09-19 1:30 ` Linus Torvalds
2005-09-19 2:02 ` Linus Torvalds
` (2 more replies)
2005-09-19 6:02 ` Anton Altaparmakov
2005-09-19 7:35 ` Matthias Urlichs
2 siblings, 3 replies; 28+ messages in thread
From: Linus Torvalds @ 2005-09-19 1:30 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
On Sun, 18 Sep 2005, Junio C Hamano wrote:
>
> * Accept patches for more portability.
>
> * strcasestr() in mailinfo. We may need compat/strcasestr.c;
> this is bugging OpenBSD folks.
Maybe something stupid like this?
Totally untested, of course.
Linus
---
diff-tree 9b2d397a5d03514bdf3f545e459817c48579830f (from 727132834e6be48a93c1bd6458a29d474ce7d5d5)
Author: Linus Torvalds <torvalds@g5.osdl.org>
Date: Sun Sep 18 18:29:07 2005 -0700
Add stupid 'strcasestr()' compat routine
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
---
diff --git a/Makefile b/Makefile
--- a/Makefile
+++ b/Makefile
@@ -9,6 +9,8 @@
# Define NO_CURL if you do not have curl installed. git-http-pull is not
# built, and you cannot use http:// and https:// transports.
#
+# Define NO_STRCASESTR if you don't have strcasestr.
+#
# Define PPC_SHA1 environment variable when running make to make use of
# a bundled SHA1 routine optimized for PowerPC.
#
@@ -203,6 +205,10 @@ ifdef NEEDS_NSL
LIBS += -lnsl
SIMPLE_LIB += -lnsl
endif
+ifdef NO_STRCASESTR
+ DEFINES += -Dstrcasestr=gitstrcasestr
+ LIB_OBJS += compat/strcasestr.o
+endif
DEFINES += '-DSHA1_HEADER=$(SHA1_HEADER)'
diff --git a/compat/strcasestr.c b/compat/strcasestr.c
new file mode 100644
--- /dev/null
+++ b/compat/strcasestr.c
@@ -0,0 +1,22 @@
+#include <string.h>
+
+char *gitstrcasestr(const char *haystack, const char *needle)
+{
+ int nlen = strlen(needle);
+ int hlen = strlen(haystack) - nlen;
+ int i;
+
+ for (i = 0; i < hlen; i++) {
+ int j;
+ for (j = 0; j < nlen; j++) {
+ unsigned char c1 = haystack[i+j];
+ unsigned char c2 = needle[j];
+ if (toupper(c1) != toupper(c2))
+ goto next;
+ }
+ return (char *) haystack + i;
+ next:
+ ;
+ }
+ return NULL;
+}
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: What to expect after GIT 0.99.7
2005-09-19 1:30 ` Linus Torvalds
@ 2005-09-19 2:02 ` Linus Torvalds
2005-09-19 9:56 ` Johannes Schindelin
2005-09-19 14:15 ` Joachim B Haga
2 siblings, 0 replies; 28+ messages in thread
From: Linus Torvalds @ 2005-09-19 2:02 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
On Sun, 18 Sep 2005, Linus Torvalds wrote:
> +++ b/compat/strcasestr.c
> @@ -0,0 +1,22 @@
> +#include <string.h>
That should be <ctype.h> of course.
Linus
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [ANNOUNCE] GIT 0.99.7
2005-09-18 23:37 ` [ANNOUNCE] GIT 0.99.7 Junio C Hamano
2005-09-18 23:40 ` What to expect after " Junio C Hamano
2005-09-19 1:14 ` [ANNOUNCE] Cogito-0.15 Petr Baudis
@ 2005-09-19 2:24 ` Nigel Cunningham
2005-09-19 12:01 ` Chris White
2 siblings, 1 reply; 28+ messages in thread
From: Nigel Cunningham @ 2005-09-19 2:24 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git, Linux Kernel Mailing List
Hi.
On Mon, 2005-09-19 at 09:37, Junio C Hamano wrote:
> I am hoping that sending this out to the kernel list is not
> considered too much of useless spamming, but I promise I
> wouldn't do thit next time for 0.99.8, if I hear from somebody
> not to.
>
> Here comes GIT 0.99.7
Could you please include a url for anyone who might not know the
canonical address from which to download?
Regards,
Nigel
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: What to expect after GIT 0.99.7
2005-09-18 23:40 ` What to expect after " Junio C Hamano
2005-09-19 1:30 ` Linus Torvalds
@ 2005-09-19 6:02 ` Anton Altaparmakov
2005-09-19 7:35 ` Matthias Urlichs
2 siblings, 0 replies; 28+ messages in thread
From: Anton Altaparmakov @ 2005-09-19 6:02 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
On Sun, 18 Sep 2005, Junio C Hamano wrote:
[snip]
> * Perhaps a tool to revert a single file to pre-modification
> state? git-cat-file blob `git-ls-files | grep foo` >foo or
> git-cat-file blob `git-ls-tree HEAD foo` >foo? What should
> the command be called? git-revert is taken so is
> git-checkout.
How about git-clean? (It cleans a "dirty" file..." IIRC that is what bk
used to call it so at least some people should be familliar with its name
that way.)
Best regards,
Anton
--
Anton Altaparmakov <aia21 at cam.ac.uk> (replace at with @)
Unix Support, Computing Service, University of Cambridge, CB2 3QH, UK
Linux NTFS maintainer / IRC: #ntfs on irc.freenode.net
WWW: http://linux-ntfs.sf.net/ & http://www-stu.christs.cam.ac.uk/~aia21/
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [ANNOUNCE] GIT 0.99.7
2005-09-19 12:01 ` Chris White
@ 2005-09-19 6:21 ` Alan Chandler
0 siblings, 0 replies; 28+ messages in thread
From: Alan Chandler @ 2005-09-19 6:21 UTC (permalink / raw)
To: git
On Monday 19 Sep 2005 13:01, Chris White wrote:
> On Monday 19 September 2005 11:24, Nigel Cunningham wrote:
> > Could you please include a url for anyone who might not know the
> > canonical address from which to download?
>
> http://www.kernel.org/pub/software/scm/git/
>
> > Regards,
> >
> > Nigel
>
> Chris White
Right now there is no tar files, only an rpm
--
Alan Chandler
http://www.chandlerfamily.org.uk
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: What to expect after GIT 0.99.7
2005-09-18 23:40 ` What to expect after " Junio C Hamano
2005-09-19 1:30 ` Linus Torvalds
2005-09-19 6:02 ` Anton Altaparmakov
@ 2005-09-19 7:35 ` Matthias Urlichs
2005-09-19 8:25 ` Junio C Hamano
2 siblings, 1 reply; 28+ messages in thread
From: Matthias Urlichs @ 2005-09-19 7:35 UTC (permalink / raw)
To: git
Hi, Junio C Hamano wrote:
> * Perhaps a tool to revert a single file to pre-modification
> state? git-cat-file blob `git-ls-files | grep foo` >foo or
> git-cat-file blob `git-ls-tree HEAD foo` >foo? What should
> the command be called? git-revert is taken so is
> git-checkout.
git-checkout can be extended to accept filenames, which would have the
additional benefit of enabling me to get any revision, not just HEAD.
So can git-reset.
I agree with Anton's "git clean"; with an optional -r <commit>
argument, that would be a better solution.
--
Matthias Urlichs | {M:U} IT Design @ m-u-it.de | smurf@smurf.noris.de
Disclaimer: The quote was selected randomly. Really. | http://smurf.noris.de
- -
BOFH excuse #396:
Mail server hit by UniSpammer.
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: What to expect after GIT 0.99.7
2005-09-19 7:35 ` Matthias Urlichs
@ 2005-09-19 8:25 ` Junio C Hamano
2005-09-19 8:36 ` Petr Baudis
2005-09-19 14:34 ` Linus Torvalds
0 siblings, 2 replies; 28+ messages in thread
From: Junio C Hamano @ 2005-09-19 8:25 UTC (permalink / raw)
To: Matthias Urlichs; +Cc: git
Matthias Urlichs <smurf@smurf.noris.de> writes:
> Hi, Junio C Hamano wrote:
>
>> * Perhaps a tool to revert a single file to pre-modification
>> state? git-cat-file blob `git-ls-files | grep foo` >foo or
>> git-cat-file blob `git-ls-tree HEAD foo` >foo? What should
>> the command be called? git-revert is taken so is
>> git-checkout.
>
> git-checkout can be extended to accept filenames, which would have the
> additional benefit of enabling me to get any revision, not just HEAD.
>
> So can git-reset.
>
> I agree with Anton's "git clean"; with an optional -r <commit>
> argument, that would be a better solution.
It probably is because I am BK untainted, but 'git clean' sounds
as if it would do 'git-ls-files --others | xargs rm -f'.
I used to do 'cvs update -p foo.c >foo.c', and extending
git-checkout may be familiar to cvs migrants. The most
roundabout way (albeit with perhaps least typing) is:
git-tar-tree HEAD | tar xf - foo.c
I originally talked about reverting file(s) in the working tree,
but I wonder if reverting a cache (eh, index) entry to the state
in a committed tree is useful. read-tree with a pathspec to
overwrite index entries for specified paths while leaving others
intact. We could think of it as undoing git-update-index.
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: What to expect after GIT 0.99.7
2005-09-19 8:25 ` Junio C Hamano
@ 2005-09-19 8:36 ` Petr Baudis
2005-09-19 14:34 ` Linus Torvalds
1 sibling, 0 replies; 28+ messages in thread
From: Petr Baudis @ 2005-09-19 8:36 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Matthias Urlichs, git
Dear diary, on Mon, Sep 19, 2005 at 10:25:21AM CEST, I got a letter
where Junio C Hamano <junkio@cox.net> told me that...
> Matthias Urlichs <smurf@smurf.noris.de> writes:
>
> > Hi, Junio C Hamano wrote:
> >
> >> * Perhaps a tool to revert a single file to pre-modification
> >> state? git-cat-file blob `git-ls-files | grep foo` >foo or
> >> git-cat-file blob `git-ls-tree HEAD foo` >foo? What should
> >> the command be called? git-revert is taken so is
> >> git-checkout.
> >
> > git-checkout can be extended to accept filenames, which would have the
> > additional benefit of enabling me to get any revision, not just HEAD.
> >
> > So can git-reset.
> >
> > I agree with Anton's "git clean"; with an optional -r <commit>
> > argument, that would be a better solution.
>
> It probably is because I am BK untainted, but 'git clean' sounds
> as if it would do 'git-ls-files --others | xargs rm -f'.
FWIW, that's also what cg-clean does. It uses cg-restore -f filename to
restore files to the state of the last commit, but it's not like I'd be
terribly happy about that.
--
Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
If you want the holes in your knowledge showing up try teaching
someone. -- Alan Cox
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: What to expect after GIT 0.99.7
2005-09-19 1:30 ` Linus Torvalds
2005-09-19 2:02 ` Linus Torvalds
@ 2005-09-19 9:56 ` Johannes Schindelin
2005-09-19 14:15 ` Joachim B Haga
2 siblings, 0 replies; 28+ messages in thread
From: Johannes Schindelin @ 2005-09-19 9:56 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Junio C Hamano, git
Hi,
On Sun, 18 Sep 2005, Linus Torvalds wrote:
> On Sun, 18 Sep 2005, Junio C Hamano wrote:
> >
> > * Accept patches for more portability.
> >
> > * strcasestr() in mailinfo. We may need compat/strcasestr.c;
> > this is bugging OpenBSD folks.
>
> Maybe something stupid like this?
>
> [...]
I like it. Git does not need a complicated Boyer-Moore algorithm, because
that code path is not time critical.
However, I would like it a bit more, if it returned (const char*). After
all, we do not need to comply with wrong interface definitions.
Ciao,
Dscho
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [ANNOUNCE] GIT 0.99.7
2005-09-19 2:24 ` [ANNOUNCE] GIT 0.99.7 Nigel Cunningham
@ 2005-09-19 12:01 ` Chris White
2005-09-19 6:21 ` Alan Chandler
0 siblings, 1 reply; 28+ messages in thread
From: Chris White @ 2005-09-19 12:01 UTC (permalink / raw)
To: ncunningham; +Cc: git, Linux Kernel Mailing List
[-- Attachment #1: Type: text/plain, Size: 250 bytes --]
On Monday 19 September 2005 11:24, Nigel Cunningham wrote:
> Could you please include a url for anyone who might not know the
> canonical address from which to download?
http://www.kernel.org/pub/software/scm/git/
> Regards,
> Nigel
Chris White
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: What to expect after GIT 0.99.7
2005-09-19 1:30 ` Linus Torvalds
2005-09-19 2:02 ` Linus Torvalds
2005-09-19 9:56 ` Johannes Schindelin
@ 2005-09-19 14:15 ` Joachim B Haga
2005-09-19 15:06 ` Linus Torvalds
2 siblings, 1 reply; 28+ messages in thread
From: Joachim B Haga @ 2005-09-19 14:15 UTC (permalink / raw)
To: git
Linus Torvalds <torvalds@osdl.org> writes:
> > * strcasestr() in mailinfo. We may need compat/strcasestr.c;
>
> Totally untested, of course.
>
> + int hlen = strlen(haystack) - nlen;
int hlen = strlen(haystack) - nlen + 1;
(otherwise you'll miss match at the end)
-j.
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: What to expect after GIT 0.99.7
2005-09-19 8:25 ` Junio C Hamano
2005-09-19 8:36 ` Petr Baudis
@ 2005-09-19 14:34 ` Linus Torvalds
1 sibling, 0 replies; 28+ messages in thread
From: Linus Torvalds @ 2005-09-19 14:34 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Matthias Urlichs, git
On Mon, 19 Sep 2005, Junio C Hamano wrote:
>
> I used to do 'cvs update -p foo.c >foo.c', and extending
> git-checkout may be familiar to cvs migrants. The most
> roundabout way (albeit with perhaps least typing) is:
>
> git-tar-tree HEAD | tar xf - foo.c
Uhh.
I use
git-checkout-index -f -u foo.c
which works fine. Of course, that doesn't help if you've updated the
index, but then I actually think it's fine to expose the index.
Now, admittedly, we should probably make that easier to do.
If you want to reset to the HEAD state _and_ your index is stale, I'd just
precede it with a
git reset
and be done. Yes, it will reset your whole index, not just that file, but
hey, big deal. In practice it works fine.
> I originally talked about reverting file(s) in the working tree,
> but I wonder if reverting a cache (eh, index) entry to the state
> in a committed tree is useful. read-tree with a pathspec to
> overwrite index entries for specified paths while leaving others
> intact. We could think of it as undoing git-update-index.
Yes, I think it would be useful to be able to read in just part of the
tree.
Linus
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: What to expect after GIT 0.99.7
2005-09-19 14:15 ` Joachim B Haga
@ 2005-09-19 15:06 ` Linus Torvalds
0 siblings, 0 replies; 28+ messages in thread
From: Linus Torvalds @ 2005-09-19 15:06 UTC (permalink / raw)
To: Joachim B Haga; +Cc: git
On Mon, 19 Sep 2005, Joachim B Haga wrote:
>
> Linus Torvalds <torvalds@osdl.org> writes:
>
> > > * strcasestr() in mailinfo. We may need compat/strcasestr.c;
> >
> > Totally untested, of course.
> >
> > + int hlen = strlen(haystack) - nlen;
>
> int hlen = strlen(haystack) - nlen + 1;
Yeah. Duh.
Linus
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [ANNOUNCE] Cogito-0.15
2005-09-19 1:14 ` [ANNOUNCE] Cogito-0.15 Petr Baudis
@ 2005-09-19 23:15 ` Pavel Machek
2005-09-20 0:35 ` Petr Baudis
2005-09-20 0:51 ` Linus Torvalds
0 siblings, 2 replies; 28+ messages in thread
From: Pavel Machek @ 2005-09-19 23:15 UTC (permalink / raw)
To: Petr Baudis; +Cc: Junio C Hamano, git, linux-kernel
Hi!
> this is the release of Cogito-0.15. It fixes several minor bugs, and
> adds a feature or two. The most important thing though is that this
> depends on Git-core-0.99.7 and uses the new command names. Everyone is
> encouraged to upgrade at least to this Cogito version in the next few
> days, since the older Cogito versions likely won't work with the future
> Git-core releases.
>
> To stay in sync with the Git terminology, Cogito also renames its
> cg-pull to cg-fetch. Since this is a major naming change (I'm not too
> happy about it, personally), cg-pull will stay aliased to cg-fetch for
> at least one (likely two) next major Cogito releases (it also produces a
> warning when invoked as cg-pull). In the more distant future, cg-pull
> will slowly become the new name of cg-update, to make it confusing.
Could we keep at least the cg-update name? It is certainly not a
*pull* because it does update local repository (and tree, too).
Pavel
--
if you have sharp zaurus hardware you don't need... you know my address
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [ANNOUNCE] Cogito-0.15
2005-09-19 23:15 ` Pavel Machek
@ 2005-09-20 0:35 ` Petr Baudis
2005-09-20 0:51 ` Linus Torvalds
1 sibling, 0 replies; 28+ messages in thread
From: Petr Baudis @ 2005-09-20 0:35 UTC (permalink / raw)
To: Pavel Machek; +Cc: Junio C Hamano, git, linux-kernel
Dear diary, on Tue, Sep 20, 2005 at 01:15:38AM CEST, I got a letter
where Pavel Machek <pavel@suse.cz> told me that...
> Hi!
Hi,
> > this is the release of Cogito-0.15. It fixes several minor bugs, and
> > adds a feature or two. The most important thing though is that this
> > depends on Git-core-0.99.7 and uses the new command names. Everyone is
> > encouraged to upgrade at least to this Cogito version in the next few
> > days, since the older Cogito versions likely won't work with the future
> > Git-core releases.
> >
> > To stay in sync with the Git terminology, Cogito also renames its
> > cg-pull to cg-fetch. Since this is a major naming change (I'm not too
> > happy about it, personally), cg-pull will stay aliased to cg-fetch for
> > at least one (likely two) next major Cogito releases (it also produces a
> > warning when invoked as cg-pull). In the more distant future, cg-pull
> > will slowly become the new name of cg-update, to make it confusing.
>
> Could we keep at least the cg-update name?
yes, I want to retain it. I'm not 100% decided yet whether to actually
use the pull term for anything in Cogito. Previous usage reportedly
confused some, the new usage actually confuses me and apparently some
other people. So I might just avoid the 'pull' term in the future
altogether. Not decided yet, though, and opinions obviously welcomed.
> It is certainly not a *pull* because it does update local repository
> (and tree, too).
AIUI, that's what makes it a pull for *cough* some people. ;-)
--
Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
VI has two modes: the one in which it beeps and the one in which
it doesn't.
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [ANNOUNCE] Cogito-0.15
2005-09-19 23:15 ` Pavel Machek
2005-09-20 0:35 ` Petr Baudis
@ 2005-09-20 0:51 ` Linus Torvalds
1 sibling, 0 replies; 28+ messages in thread
From: Linus Torvalds @ 2005-09-20 0:51 UTC (permalink / raw)
To: Pavel Machek; +Cc: Petr Baudis, Junio C Hamano, git, linux-kernel
On Tue, 20 Sep 2005, Pavel Machek wrote:
>
> Could we keep at least the cg-update name? It is certainly not a
> *pull* because it does update local repository (and tree, too).
That _is_ what "pull" means.
"fetch" is the one that only updates the history. A "pull" also does a
merge and updates the current branch _and_ the currently checked out tree.
Linus
^ permalink raw reply [flat|nested] 28+ messages in thread
end of thread, other threads:[~2005-09-20 0:52 UTC | newest]
Thread overview: 28+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-09-08 0:08 GIT 0.99.6 Junio C Hamano
2005-09-08 22:14 ` Tool renames and 'ls-files -t' output Junio C Hamano
2005-09-09 9:20 ` Post 0.99.7 preperation patches Junio C Hamano
2005-09-12 1:26 ` Petr Baudis
2005-09-11 7:02 ` RFC: s/git-merge-base/git-find-common-ancestor/g Yasushi SHOJI
2005-09-11 7:38 ` Junio C Hamano
2005-09-11 8:40 ` [PATCH] Rename git-merge-base to git-find-merge-base Yasushi SHOJI
2005-09-09 0:58 ` [RFC/Patch] Tool rename fallout fix Junio C Hamano
2005-09-17 16:43 ` No GIT 0.99.7 today Junio C Hamano
2005-09-18 23:37 ` [ANNOUNCE] GIT 0.99.7 Junio C Hamano
2005-09-18 23:40 ` What to expect after " Junio C Hamano
2005-09-19 1:30 ` Linus Torvalds
2005-09-19 2:02 ` Linus Torvalds
2005-09-19 9:56 ` Johannes Schindelin
2005-09-19 14:15 ` Joachim B Haga
2005-09-19 15:06 ` Linus Torvalds
2005-09-19 6:02 ` Anton Altaparmakov
2005-09-19 7:35 ` Matthias Urlichs
2005-09-19 8:25 ` Junio C Hamano
2005-09-19 8:36 ` Petr Baudis
2005-09-19 14:34 ` Linus Torvalds
2005-09-19 1:14 ` [ANNOUNCE] Cogito-0.15 Petr Baudis
2005-09-19 23:15 ` Pavel Machek
2005-09-20 0:35 ` Petr Baudis
2005-09-20 0:51 ` Linus Torvalds
2005-09-19 2:24 ` [ANNOUNCE] GIT 0.99.7 Nigel Cunningham
2005-09-19 12:01 ` Chris White
2005-09-19 6:21 ` Alan Chandler
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).