Git development
 help / color / mirror / Atom feed
* Re: [PATCH 3/3] Add a few more words to the glossary.
From: Junio C Hamano @ 2006-05-04  5:58 UTC (permalink / raw)
  To: Jon Loeliger; +Cc: git
In-Reply-To: <E1FbVJi-0004UJ-59@jdl.com>

Jon Loeliger <jdl@jdl.com> writes:

>  ref::
> -	A 40-byte hex representation of a SHA1 pointing to a particular
> -	object. These may be stored in `$GIT_DIR/refs/`.
> +	A 40-byte hex representation of a SHA1 or a name that denotes
> +	a particular object. These may be stored in `$GIT_DIR/refs/`.
>  
> +symbolic ref::
> +	See "ref".

Uum.  Not very clear.  Do we use that word that often?

I think I used that term to differenciate between HEAD symlink
pointing at refs/heads/master and HEAD being a regular file that
stores a line "ref: refs/heads/master\n"; the latter is the
modern style "textual symref", so in that context it is not
about 40-byte hex at all.  And at that level it is really a
jargon to talk about one small implementation detail of HEAD, so
I am not sure it deserves to be in the glossary.

>  tracking branch::
> -	A regular git branch that is used to follow changes from
> +	A regular git branch that is used to follow changes frompointing
>  	another repository.  A tracking branch should not contain

I think this is a typo?

^ permalink raw reply

* Re: [PATCH 1/3] Alphabetize the glossary.
From: Junio C Hamano @ 2006-05-04  5:46 UTC (permalink / raw)
  To: Jon Loeliger; +Cc: git
In-Reply-To: <E1FbVFi-0004Tt-Aw@jdl.com>

Jon Loeliger <jdl@jdl.com> writes:

> Signed-off-by: Jon Loeliger <jdl@jdl.com>
>
> ---
>
> Yeah, there is a script that also alphabetize the glossary.
> But let's just be explicit and complete here.

You alphabetized, _and_ added reference to "dirty" from clean,
without adding a corresponding reference to "clean" from dirty,
which is probably OK.

^ permalink raw reply

* Re: git-feed-mail-list.sh
From: Junio C Hamano @ 2006-05-04  5:16 UTC (permalink / raw)
  Cc: git
In-Reply-To: <7vmzdy9zl2.fsf@assigned-by-dhcp.cox.net>

Junio C Hamano <junkio@cox.net> writes:

> David Woodhouse <dwmw2@infradead.org> writes:
>
>> # $FROM specifies the From: header used in the mails. It'll default
>> # to GIT_COMMITTER_EMAIL if that exists, or to `whoami`@`hostname`
>
> I am not sure if this part is tested..
>
>> # Unless configured otherwise, just cat it instead of mailing.
>> if [ -z "$FROM" ]; then
>>     if [ -z "$GIT_COMMITTER_EMAIL" ]; then 
>> 	FROM="$GIT_COMMITTER_EMAIL"
>>     else
>> 	FROM=`whoami`@`hostname`
>>     fi
>> fi
>
> Maybe you meant 'if test -n "$GIT_COMMITTER_EMAIL"' here?
>
>> # takes an object and generates the object's parent(s)
>> createmail () {
>>     local commit
>
> If you were to do bashism local, don't you want to also localize
> other variables like key, SUBHEX, NEWSUB,...?
>
> It may make sense to enhance format-patch to do the Q encoding,
> so that you do not have to do this part by hand...
>
>> 	git-diff -B $parent $commit > $TMPCM
>> 	diffstat -p1 $TMPCM 2>/dev/null
>
> With GIT 1.3.0 and later:
>
> 	git diff --patch-with-stat $parent..$commit
>
> would be simpler here.

Or at least lose "diffstat -p1" and replace it with

	git-apply --stat --status

which would be more pleasant.

>> if [ -z $2 ]; then
>>     lastmail=`cat $MAILTAG`
>> else
>>     lastmail=$(git-rev-parse $2)
>> fi
>
> lastmail=`git rev-parse --default "$MAILTAG" ${2+"$2"}`

As I wrote it this is broken, sorry.

This assumes you stop doing "MAILTAG=.git/refs/tags/MailDone"
by hand and lose "do we have GIT_DIR" logic as well.
Instead define MAILTAG=tags/MailDone or maybe refs/tags/MailDone
and let "git rev-parse --default refs/tags/MailDone" figure out
what to do when GIT_DIR is set or unset.

^ permalink raw reply

* Re: git-feed-mail-list.sh
From: Junio C Hamano @ 2006-05-04  4:35 UTC (permalink / raw)
  To: David Woodhouse; +Cc: git
In-Reply-To: <1146678513.20773.45.camel@pmac.infradead.org>

David Woodhouse <dwmw2@infradead.org> writes:

> # $FROM specifies the From: header used in the mails. It'll default
> # to GIT_COMMITTER_EMAIL if that exists, or to `whoami`@`hostname`

I am not sure if this part is tested..

> # Unless configured otherwise, just cat it instead of mailing.
> if [ -z "$FROM" ]; then
>     if [ -z "$GIT_COMMITTER_EMAIL" ]; then 
> 	FROM="$GIT_COMMITTER_EMAIL"
>     else
> 	FROM=`whoami`@`hostname`
>     fi
> fi

Maybe you meant 'if test -n "$GIT_COMMITTER_EMAIL"' here?

> # takes an object and generates the object's parent(s)
> createmail () {
>     local commit

If you were to do bashism local, don't you want to also localize
other variables like key, SUBHEX, NEWSUB,...?

It may make sense to enhance format-patch to do the Q encoding,
so that you do not have to do this part by hand...

> 	git-diff -B $parent $commit > $TMPCM
> 	diffstat -p1 $TMPCM 2>/dev/null

With GIT 1.3.0 and later:

	git diff --patch-with-stat $parent..$commit

would be simpler here.

> base=$(git-rev-parse $1)
>
> if [ -z $2 ]; then
>     lastmail=`cat $MAILTAG`
> else
>     lastmail=$(git-rev-parse $2)
> fi

lastmail=`git rev-parse --default "$MAILTAG" ${2+"$2"}`

> if [ -z $1 ]; then
>     base=$(git-rev-parse HEAD) || exit 1
> else
>     base=$(git-rev-parse $1) || exit 1
> fi

I am not sure if earlier base=$(git-rev-parse $1) is needed if
you do this here...

^ permalink raw reply

* [PATCH 3/3] Add a few more words to the glossary.
From: Jon Loeliger @ 2006-05-04  4:19 UTC (permalink / raw)
  To: git


Clean up a few entries and fix typos.

    bare repository
    cherry-picking
    hook
    symbolic ref
    topic branch

Signed-off-by: Jon Loeliger <jdl@jdl.com>


---

 Documentation/glossary.txt |   68 ++++++++++++++++++++++++++++++++++++--------
 1 files changed, 55 insertions(+), 13 deletions(-)

b7524dc93e17807a3657f017adcbe129e16c4b94
diff --git a/Documentation/glossary.txt b/Documentation/glossary.txt
index 86196c4..f166d4f 100644
--- a/Documentation/glossary.txt
+++ b/Documentation/glossary.txt
@@ -3,6 +3,17 @@ alternate object database::
 	object database from another object database, which is called
 	"alternate".
 
+bare repository::
+	A bare repository is normally an appropriately named
+	directory with a `.git` suffix that does not have a
+	locally checked-out copy of any of the files under revision
+	control.  That is, all of the `git` administrative and
+	control files that would normally be present in the
+	hidden `.git` sub-directory are directly present in
+	the `repository.git` directory instead, and no other files
+	are present and checked out.  Usually publishers of public
+	repositories make bare repositories available.
+
 blob object::
 	Untyped object, e.g. the contents of a file.
 
@@ -28,6 +39,15 @@ checkout::
 	The action of updating the working tree to a revision which was
 	stored in the object database.
 
+cherry-picking::
+	In SCM jargon, "cherry pick" means to choose a subset of
+	changes out of a series of changes (typically commits)
+	and record them as a new series of changes on top of
+	different codebase.  In GIT, this is performed by
+	"git cherry-pick" command to extract the change
+	introduced by an existing commit and to record it based
+	on the tip of the current branch as a new commit.
+
 clean::
 	A working tree is clean, if it corresponds to the revision
 	referenced by the current head.  Also see "dirty".
@@ -100,6 +120,16 @@ head ref::
 	A ref pointing to a head. Often, this is abbreviated to "head".
 	Head refs are stored in `$GIT_DIR/refs/heads/`.
 
+hook::
+	During the normal execution of several git commands,
+	call-outs are made to optional scripts that allow
+	a developer to add functionality or checking.
+	Typically, the hooks allow for a command to be pre-verified
+	and potentially aborted, and allow for a post-notification
+	after the operation is done.
+	The hook scripts are found in the `$GIT_DIR/hooks/` directory,
+	and are enabled by simply making them executable.
+
 index::
 	A collection of files with stat information, whose contents are
 	stored as objects. The index is a stored version of your working
@@ -113,10 +143,10 @@ index entry::
 	that file).
 
 master::
-	The default branch. Whenever you create a git repository, a branch
-	named "master" is created, and becomes the active branch. In most
-	cases, this contains the local development.
-
+	The default development branch. Whenever you create a git
+	repository, a branch named "master" is created, and becomes
+	the active branch. In most cases, this contains the local
+	development, though that is purely conventional and not required.
 
 merge::
 	To merge branches means to try to accumulate the changes since a
@@ -151,10 +181,11 @@ octopus::
 	predator.
 
 origin::
-	The default upstream branch. Most projects have one upstream
-	project which they track, and by default 'origin' is used for
-	that purpose.  New updates from upstream will be fetched into
-	this branch; you should never commit to it yourself.
+	The default upstream tracking branch. Most projects have at
+	least one upstream project which they track. By default
+	'origin' is used for that purpose.  New upstream updates
+	will be fetched into this branch; you should never commit
+	to it yourself.
 
 pack::
 	A set of objects which have been compressed into one file (to save
@@ -168,7 +199,8 @@ parent::
 	A commit object contains a (possibly empty) list of the logical
 	predecessor(s) in the line of development, i.e. its parents.
 
-pickaxe:: The term pickaxe refers to an option to the diffcore routines
+pickaxe::
+	The term pickaxe refers to an option to the diffcore routines
 	that help select changes that add or delete a given text string.
 	With the --pickaxe-all option, it can be used to view the
 	full changeset that introduced or removed, say, a particular
@@ -204,8 +236,8 @@ rebase::
 	changes from that branch.
 
 ref::
-	A 40-byte hex representation of a SHA1 pointing to a particular
-	object. These may be stored in `$GIT_DIR/refs/`.
+	A 40-byte hex representation of a SHA1 or a name that denotes
+	a particular object. These may be stored in `$GIT_DIR/refs/`.
 
 refspec::
 	A refspec is used by fetch and push to describe the mapping
@@ -243,10 +275,20 @@ SCM::
 SHA1::
 	Synonym for object name.
 
+symbolic ref::
+	See "ref".
+
+topic branch::
+	A regular git branch that is used by a developer to
+	identify a conceptual line of development.  Since branches
+	are very easy and inexpensive, it is often desirable to
+	have several small branches that each contain very well
+	defined concepts or small incremental yet related changes.
+
 tracking branch::
-	A regular git branch that is used to follow changes from
+	A regular git branch that is used to follow changes frompointing
 	another repository.  A tracking branch should not contain
-	direct modifications or made commits made locally.
+	direct modifications or have local commits made to it.
 	A tracking branch can usually be identified as the
 	right-hand-side ref in a Pull: refspec.
 
-- 
1.3.1.g3d990

^ permalink raw reply related

* [PATCH 2/3] Added definitions for a few words:
From: Jon Loeliger @ 2006-05-04  4:18 UTC (permalink / raw)
  To: git


    fast forward
    pickaxe
    refspec
    tracking branch

Wild hack allows "link:git-" prefix to reference commands too.

Signed-off-by: Jon Loeliger <jdl@jdl.com>


---

Yep, this pickaxe entry is b0rked.
Apply the next patch too.


 Documentation/glossary.txt     |   33 +++++++++++++++++++++++++++++++++
 Documentation/sort_glossary.pl |    2 +-
 2 files changed, 34 insertions(+), 1 deletions(-)

b63f925f5f88549581324257d3b2030163389a98
diff --git a/Documentation/glossary.txt b/Documentation/glossary.txt
index 075c078..86196c4 100644
--- a/Documentation/glossary.txt
+++ b/Documentation/glossary.txt
@@ -68,6 +68,14 @@ ent::
 	`http://en.wikipedia.org/wiki/Ent_(Middle-earth)` for an in-depth
 	explanation.
 
+fast forward::
+	A fast-forward is a special type of merge where you have
+	a revision and you are "merging" another branch's changes
+	that happen to be a descendant of what you have.
+	In such these cases, you do not make a new merge commit but
+	instead just update to his revision. This will happen
+	frequently on a tracking branch of a remote repository.
+
 fetch::
 	Fetching a branch means to get the branch's head ref from a
 	remote repository, to find out which objects are missing from
@@ -160,6 +168,12 @@ parent::
 	A commit object contains a (possibly empty) list of the logical
 	predecessor(s) in the line of development, i.e. its parents.
 
+pickaxe:: The term pickaxe refers to an option to the diffcore routines
+	that help select changes that add or delete a given text string.
+	With the --pickaxe-all option, it can be used to view the
+	full changeset that introduced or removed, say, a particular
+	line of text.  See gitlink:git-diff[1].
+
 plumbing::
 	Cute name for core git.
 
@@ -193,6 +207,18 @@ ref::
 	A 40-byte hex representation of a SHA1 pointing to a particular
 	object. These may be stored in `$GIT_DIR/refs/`.
 
+refspec::
+	A refspec is used by fetch and push to describe the mapping
+	between remote ref and local ref.  They are combined with
+	a colon in the format <src>:<dst>, preceded by an optional
+	plus sign, +.  For example:
+	`git fetch $URL refs/heads/master:refs/heads/origin`
+	means "grab the master branch head from the $URL and store
+	it as my origin branch head".
+	And `git push $URL refs/heads/master:refs/heads/to-upstream`
+	means "publish my master branch head as to-upstream master head
+	at $URL".   See also gitlink:git-push[1]
+
 repository::
 	A collection of refs together with an object database containing
 	all objects, which are reachable from the refs, possibly accompanied
@@ -217,6 +243,13 @@ SCM::
 SHA1::
 	Synonym for object name.
 
+tracking branch::
+	A regular git branch that is used to follow changes from
+	another repository.  A tracking branch should not contain
+	direct modifications or made commits made locally.
+	A tracking branch can usually be identified as the
+	right-hand-side ref in a Pull: refspec.
+
 tree object::
 	An object containing a list of file names and modes along with refs
 	to the associated blob and/or tree objects. A tree is equivalent
diff --git a/Documentation/sort_glossary.pl b/Documentation/sort_glossary.pl
index e57dc78..e0bc552 100644
--- a/Documentation/sort_glossary.pl
+++ b/Documentation/sort_glossary.pl
@@ -48,7 +48,7 @@ This list is sorted alphabetically:
 ';
 
 @keys=sort {uc($a) cmp uc($b)} keys %terms;
-$pattern='(\b'.join('\b|\b',reverse @keys).'\b)';
+$pattern='(\b(?<!link:git-)'.join('\b|\b(?<!link:git-)',reverse @keys).'\b)';
 foreach $key (@keys) {
 	$terms{$key}=~s/$pattern/sprintf "<<ref_".no_spaces($1).",$1>>";/eg;
 	print '[[ref_'.no_spaces($key).']]'.$key."::\n"
-- 
1.3.1.g3d990

^ permalink raw reply related

* [PATCH 1/3] Alphabetize the glossary.
From: Jon Loeliger @ 2006-05-04  4:15 UTC (permalink / raw)
  To: git


Signed-off-by: Jon Loeliger <jdl@jdl.com>

---

Yeah, there is a script that also alphabetize the glossary.
But let's just be explicit and complete here.


 Documentation/glossary.txt |  339 ++++++++++++++++++++++----------------------
 1 files changed, 170 insertions(+), 169 deletions(-)

374314abaefe3509c6016eb811b09e115ec4f2a8
diff --git a/Documentation/glossary.txt b/Documentation/glossary.txt
index 02a9d9c..075c078 100644
--- a/Documentation/glossary.txt
+++ b/Documentation/glossary.txt
@@ -1,79 +1,37 @@
-object::
-	The unit of storage in git. It is uniquely identified by
-	the SHA1 of its contents. Consequently, an object can not
-	be changed.
-
-object name::
-	The unique identifier of an object. The hash of the object's contents
-	using the Secure Hash Algorithm 1 and usually represented by the 40
-	character hexadecimal encoding of the hash of the object (possibly
-	followed by a white space).
-
-SHA1::
-	Synonym for object name.
-
-object identifier::
-	Synonym for object name.
-
-hash::
-	In git's context, synonym to object name.
-
-object database::
-	Stores a set of "objects", and an individual object is identified
-	by its object name. The objects usually live in `$GIT_DIR/objects/`.
+alternate object database::
+	Via the alternates mechanism, a repository can inherit part of its
+	object database from another object database, which is called
+	"alternate".
 
 blob object::
 	Untyped object, e.g. the contents of a file.
 
-tree object::
-	An object containing a list of file names and modes along with refs
-	to the associated blob and/or tree objects. A tree is equivalent
-	to a directory.
-
-tree::
-	Either a working tree, or a tree object together with the
-	dependent blob and tree objects (i.e. a stored representation
-	of a working tree).
-
-DAG::
-	Directed acyclic graph. The commit objects form a directed acyclic
-	graph, because they have parents (directed), and the graph of commit
-	objects is acyclic (there is no chain which begins and ends with the
-	same object).
-
-index::
-	A collection of files with stat information, whose contents are
-	stored as objects. The index is a stored version of your working
-	tree. Truth be told, it can also contain a second, and even a third
-	version of a working tree, which are used when merging.
-
-index entry::
-	The information regarding a particular file, stored in the index.
-	An index entry can be unmerged, if a merge was started, but not
-	yet finished (i.e. if the index contains multiple versions of
-	that file).
-
-unmerged index:
-	An index which contains unmerged index entries.
+branch::
+	A non-cyclical graph of revisions, i.e. the complete history of
+	a particular revision, which is called the branch head. The
+	branch heads are stored in `$GIT_DIR/refs/heads/`.
 
 cache::
 	Obsolete for: index.
 
-working tree::
-	The set of files and directories currently being worked on,
-	i.e. you can work in your working tree without using git at all.
-
-directory::
-	The list you get with "ls" :-)
+chain::
+	A list of objects, where each object in the list contains a
+	reference to its successor (for example, the successor of a commit
+	could be one of its parents).
 
-revision::
-	A particular state of files and directories which was stored in
-	the object database. It is referenced by a commit object.
+changeset::
+	BitKeeper/cvsps speak for "commit". Since git does not store
+	changes, but states, it really does not make sense to use
+	the term "changesets" with git.
 
 checkout::
 	The action of updating the working tree to a revision which was
 	stored in the object database.
 
+clean::
+	A working tree is clean, if it corresponds to the revision
+	referenced by the current head.  Also see "dirty".
+
 commit::
 	As a verb: The action of storing the current state of the index in the
 	object database. The result is a revision.
@@ -85,73 +43,72 @@ commit object::
 	tree object which corresponds to the top directory of the
 	stored revision.
 
-parent::
-	A commit object contains a (possibly empty) list of the logical
-	predecessor(s) in the line of development, i.e. its parents.
+core git::
+	Fundamental data structures and utilities of git. Exposes only
+	limited source code management tools.
 
-changeset::
-	BitKeeper/cvsps speak for "commit". Since git does not store
-	changes, but states, it really does not make sense to use
-	the term "changesets" with git.
+DAG::
+	Directed acyclic graph. The commit objects form a directed acyclic
+	graph, because they have parents (directed), and the graph of commit
+	objects is acyclic (there is no chain which begins and ends with the
+	same object).
 
-clean::
-	A working tree is clean, if it corresponds to the revision
-	referenced by the current head.
+dircache::
+	You are *waaaaay* behind.
 
 dirty::
 	A working tree is said to be dirty if it contains modifications
 	which have not been committed to the current branch.
 
-head::
-	The top of a branch. It contains a ref to the corresponding
-	commit object.
+directory::
+	The list you get with "ls" :-)
 
-branch::
-	A non-cyclical graph of revisions, i.e. the complete history of
-	a particular revision, which is called the branch head. The
-	branch heads are stored in `$GIT_DIR/refs/heads/`.
+ent::
+	Favorite synonym to "tree-ish" by some total geeks. See
+	`http://en.wikipedia.org/wiki/Ent_(Middle-earth)` for an in-depth
+	explanation.
 
-master::
-	The default branch. Whenever you create a git repository, a branch
-	named "master" is created, and becomes the active branch. In most
-	cases, this contains the local development.
+fetch::
+	Fetching a branch means to get the branch's head ref from a
+	remote repository, to find out which objects are missing from
+	the local object database, and to get them, too.
 
-origin::
-	The default upstream branch. Most projects have one upstream
-	project which they track, and by default 'origin' is used for
-	that purpose.  New updates from upstream will be fetched into
-	this branch; you should never commit to it yourself.
+file system::
+	Linus Torvalds originally designed git to be a user space file
+	system, i.e. the infrastructure to hold files and directories.
+	That ensured the efficiency and speed of git.
 
-ref::
-	A 40-byte hex representation of a SHA1 pointing to a particular
-	object. These may be stored in `$GIT_DIR/refs/`.
+git archive::
+	Synonym for repository (for arch people).
+
+hash::
+	In git's context, synonym to object name.
+
+head::
+	The top of a branch. It contains a ref to the corresponding
+	commit object.
 
 head ref::
 	A ref pointing to a head. Often, this is abbreviated to "head".
 	Head refs are stored in `$GIT_DIR/refs/heads/`.
 
-tree-ish::
-	A ref pointing to either a commit object, a tree object, or a
-	tag object pointing to a tag or commit or tree object.
+index::
+	A collection of files with stat information, whose contents are
+	stored as objects. The index is a stored version of your working
+	tree. Truth be told, it can also contain a second, and even a third
+	version of a working tree, which are used when merging.
 
-ent::
-	Favorite synonym to "tree-ish" by some total geeks. See
-	`http://en.wikipedia.org/wiki/Ent_(Middle-earth)` for an in-depth
-	explanation.
+index entry::
+	The information regarding a particular file, stored in the index.
+	An index entry can be unmerged, if a merge was started, but not
+	yet finished (i.e. if the index contains multiple versions of
+	that file).
 
-tag object::
-	An object containing a ref pointing to another object, which can
-	contain a message just like a commit object. It can also
-	contain a (PGP) signature, in which case it is called a "signed
-	tag object".
+master::
+	The default branch. Whenever you create a git repository, a branch
+	named "master" is created, and becomes the active branch. In most
+	cases, this contains the local development.
 
-tag::
-	A ref pointing to a tag or commit object. In contrast to a head,
-	a tag is not changed by a commit. Tags (not tag objects) are
-	stored in `$GIT_DIR/refs/tags/`. A git tag has nothing to do with
-	a Lisp tag (which is called object type in git's context).
-	A tag is most typically used to mark a particular point in the
-	commit ancestry chain.
 
 merge::
 	To merge branches means to try to accumulate the changes since a
@@ -159,55 +116,57 @@ merge::
 	merge uses heuristics to accomplish that. Evidently, an automatic
 	merge can fail.
 
-octopus::
-	To merge more than two branches. Also denotes an intelligent
-	predator.
+object::
+	The unit of storage in git. It is uniquely identified by
+	the SHA1 of its contents. Consequently, an object can not
+	be changed.
 
-resolve::
-	The action of fixing up manually what a failed automatic merge
-	left behind.
+object database::
+	Stores a set of "objects", and an individual object is identified
+	by its object name. The objects usually live in `$GIT_DIR/objects/`.
 
-rewind::
-	To throw away part of the development, i.e. to assign the head to
-	an earlier revision.
+object identifier::
+	Synonym for object name.
 
-rebase::
-	To clean a branch by starting from the head of the main line of
-	development ("master"), and reapply the (possibly cherry-picked)
-	changes from that branch.
+object name::
+	The unique identifier of an object. The hash of the object's contents
+	using the Secure Hash Algorithm 1 and usually represented by the 40
+	character hexadecimal encoding of the hash of the object (possibly
+	followed by a white space).
 
-repository::
-	A collection of refs together with an object database containing
-	all objects, which are reachable from the refs, possibly accompanied
-	by meta data from one or more porcelains. A repository can
-	share an object database with other repositories.
+object type:
+	One of the identifiers "commit","tree","tag" and "blob" describing
+	the type of an object.
 
-git archive::
-	Synonym for repository (for arch people).
+octopus::
+	To merge more than two branches. Also denotes an intelligent
+	predator.
 
-file system::
-	Linus Torvalds originally designed git to be a user space file
-	system, i.e. the infrastructure to hold files and directories.
-	That ensured the efficiency and speed of git.
+origin::
+	The default upstream branch. Most projects have one upstream
+	project which they track, and by default 'origin' is used for
+	that purpose.  New updates from upstream will be fetched into
+	this branch; you should never commit to it yourself.
 
-alternate object database::
-	Via the alternates mechanism, a repository can inherit part of its
-	object database from another object database, which is called
-	"alternate".
+pack::
+	A set of objects which have been compressed into one file (to save
+	space or to transmit them efficiently).
 
-reachable::
-	An object is reachable from a ref/commit/tree/tag, if there is a
-	chain leading from the latter to the former.
+pack index::
+	The list of identifiers, and other information, of the objects in a
+	pack, to assist in efficiently accessing the contents of a pack. 
 
-chain::
-	A list of objects, where each object in the list contains a
-	reference to its successor (for example, the successor of a commit
-	could be one of its parents).
+parent::
+	A commit object contains a (possibly empty) list of the logical
+	predecessor(s) in the line of development, i.e. its parents.
 
-fetch::
-	Fetching a branch means to get the branch's head ref from a
-	remote repository, to find out which objects are missing from
-	the local object database, and to get them, too.
+plumbing::
+	Cute name for core git.
+
+porcelain::
+	Cute name for programs and program suites depending on core git,
+	presenting a high level access to core git. Porcelains expose
+	more of a SCM interface than the plumbing.
 
 pull::
 	Pulling a branch means to fetch it and merge it.
@@ -221,33 +180,75 @@ push::
 	the remote head ref. If the remote head is not an ancestor to the
 	local head, the push fails.
 
-pack::
-	A set of objects which have been compressed into one file (to save
-	space or to transmit them efficiently).
+reachable::
+	An object is reachable from a ref/commit/tree/tag, if there is a
+	chain leading from the latter to the former.
 
-pack index::
-	The list of identifiers, and other information, of the objects in a
-	pack, to assist in efficiently accessing the contents of a pack. 
+rebase::
+	To clean a branch by starting from the head of the main line of
+	development ("master"), and reapply the (possibly cherry-picked)
+	changes from that branch.
 
-core git::
-	Fundamental data structures and utilities of git. Exposes only
-	limited source code management tools.
+ref::
+	A 40-byte hex representation of a SHA1 pointing to a particular
+	object. These may be stored in `$GIT_DIR/refs/`.
 
-plumbing::
-	Cute name for core git.
+repository::
+	A collection of refs together with an object database containing
+	all objects, which are reachable from the refs, possibly accompanied
+	by meta data from one or more porcelains. A repository can
+	share an object database with other repositories.
 
-porcelain::
-	Cute name for programs and program suites depending on core git,
-	presenting a high level access to core git. Porcelains expose
-	more of a SCM interface than the plumbing.
+resolve::
+	The action of fixing up manually what a failed automatic merge
+	left behind.
 
-object type:
-	One of the identifiers "commit","tree","tag" and "blob" describing
-	the type of an object.
+revision::
+	A particular state of files and directories which was stored in
+	the object database. It is referenced by a commit object.
+
+rewind::
+	To throw away part of the development, i.e. to assign the head to
+	an earlier revision.
 
 SCM::
 	Source code management (tool).
 
-dircache::
-	You are *waaaaay* behind.
+SHA1::
+	Synonym for object name.
+
+tree object::
+	An object containing a list of file names and modes along with refs
+	to the associated blob and/or tree objects. A tree is equivalent
+	to a directory.
+
+tree::
+	Either a working tree, or a tree object together with the
+	dependent blob and tree objects (i.e. a stored representation
+	of a working tree).
+
+tree-ish::
+	A ref pointing to either a commit object, a tree object, or a
+	tag object pointing to a tag or commit or tree object.
+
+tag object::
+	An object containing a ref pointing to another object, which can
+	contain a message just like a commit object. It can also
+	contain a (PGP) signature, in which case it is called a "signed
+	tag object".
+
+tag::
+	A ref pointing to a tag or commit object. In contrast to a head,
+	a tag is not changed by a commit. Tags (not tag objects) are
+	stored in `$GIT_DIR/refs/tags/`. A git tag has nothing to do with
+	a Lisp tag (which is called object type in git's context).
+	A tag is most typically used to mark a particular point in the
+	commit ancestry chain.
+
+unmerged index:
+	An index which contains unmerged index entries.
+
+working tree::
+	The set of files and directories currently being worked on,
+	i.e. you can work in your working tree without using git at all.
 
-- 
1.3.1.g3d990

^ permalink raw reply related

* Re: sha1_to_hex() usage cleanup
From: Linus Torvalds @ 2006-05-04  1:27 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git
In-Reply-To: <7v1wvabp7a.fsf@assigned-by-dhcp.cox.net>



On Wed, 3 May 2006, Junio C Hamano wrote:
> 
> Makes sort of sense in that the callers still need to be aware
> of the magic 4 limit but as long as they are they do not have to
> worry about allocation/deallocation/copying.  But is that kind
> of cheat maintainable?  I dunno.

If we just tell people that the rule is that it's still a statically 
allocated buffer, but that you can magically use two "sha1_to_hex()" calls 
in the same printf(), we'll probably get a good mix of "usable and safe".

		Linus

^ permalink raw reply

* Re: [ANNOUNCE] Revamped Git homepage
From: Petr Baudis @ 2006-05-04  1:23 UTC (permalink / raw)
  To: Jakub Narebski; +Cc: git
In-Reply-To: <e3bjnb$72o$1@sea.gmane.org>

Dear diary, on Thu, May 04, 2006 at 03:01:33AM CEST, I got a letter
where Jakub Narebski <jnareb@gmail.com> said that...
> Very nice, although earlier version had the advantage of having everything
> on one page. I hope that no information was lost.

Perhaps few bits but I think they were insignificant or just confusing.
:) (Like Cogito/StGit commands for cloning Git repository).

> What it lacks is the link in menu bar to Home (or News), 
> i.e. http://git.or.cz/ or http://git.or.cz/index.html page.

You could get there clicking on the Git logo, but I agree that this
wasn't very intuitive. I've added a link.

> About Download page (http://git.or.cz/download.html) - it would be nice to
> have in comments about firewalls told which port git uses for git://
> protocol.

Good idea, added.


By the way, it has been suggested on #git that it might be worth sharing
the same color scheme between gitweb and the homepage. I have tried it
out but the gitweb's color scheme might be a bit too dull for the
homepage, dunno (I might also just already get too used to the bluish
theme).  Opinions welcome. It's the "Gitweb gray" stylesheet (in Firefox,
View -> Page style).

Thanks,

-- 
				Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
Right now I am having amnesia and deja-vu at the same time.  I think
I have forgotten this before.

^ permalink raw reply

* Re: Fetching a tree from a remote server
From: Daniel Barkalow @ 2006-05-04  1:08 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: git
In-Reply-To: <Pine.LNX.4.63.0605040247460.24675@wbgn013.biozentrum.uni-wuerzburg.de>

On Thu, 4 May 2006, Johannes Schindelin wrote:

> Hi,
> 
> On Wed, 3 May 2006, Daniel Barkalow wrote:
> 
> > Is there something to do the opposite of git clone -n? That is, I want to 
> > fill a directory with a treeish ref, and I don't care about any history or 
> > bookkeeping.
> 
> Is git-tar-tree your friend or what?

The problem is that I'm on the build machine, and the repository is on the 
remote server. I suppose I could do "(ssh server 
GIT_DIR=/repo.git git-tar-tree HEAD) | tar -xf -", but that's not quite 
the most clear thing, and I'd have to split up the URLs. Also, it wouldn't 
work with only git: access to the repository.

(On the other hand, it does work for my actual application, I'm doing it 
from a Makefile, and it's blazingly fast, so I guess I'm set.)

	-Daniel
*This .sig left intentionally blank*

^ permalink raw reply

* Re: [ANNOUNCE] Revamped Git homepage
From: Jakub Narebski @ 2006-05-04  1:01 UTC (permalink / raw)
  To: git
In-Reply-To: <20060504003518.GT27689@pasky.or.cz>

Petr Baudis wrote:

> Well, here we go, I've just uploaded a new version of the Git homepage;
> I wonder how you feel about it now.
> 
> Obviously, it still feels rather empty and I'm certainly not much of
> a webmaster myself, but I take patches and pull requests; see
> http://git.or.cz/community.html for the Git homepage git repository
> information.
> 
> I've borrowed Jonas Fonseca's ELinks homepage design first, but the
> contents ended up almost entirely rewritten as well (except the Related
> Tools section, which stayed mostly as it was). Git now poses as a real
> version control system and the plumbing stuff is mentioned only in the
> bottom paragraphs. ;-)

Very nice, although earlier version had the advantage of having everything
on one page. I hope that no information was lost.

What it lacks is the link in menu bar to Home (or News), 
i.e. http://git.or.cz/ or http://git.or.cz/index.html page.

About Download page (http://git.or.cz/download.html) - it would be nice to
have in comments about firewalls told which port git uses for git://
protocol.

-- 
Jakub Narebski
Warsaw, Poland

^ permalink raw reply

* Re: [ANNOUNCE] Git wiki
From: Daniel Barkalow @ 2006-05-04  0:53 UTC (permalink / raw)
  To: Petr Baudis; +Cc: David Lang, Jakub Narebski, git
In-Reply-To: <20060503193013.GN27689@pasky.or.cz>

On Wed, 3 May 2006, Petr Baudis wrote:

> Dear diary, on Wed, May 03, 2006 at 09:21:54PM CEST, I got a letter
> where David Lang <dlang@digitalinsight.com> said that...
> > On Wed, 3 May 2006, Jakub Narebski wrote:
> > 
> > >As to content, we could I think use material found at Wikipedia Git page,
> > >and on External Links in Wikipedia Git_(software) article, not repeating of
> > >course what is in official Git Documentation/
> > 
> > please go ahead and put a lot of the info that is in the GIT 
> > Documentation/ on the wiki. it's far easier to go to one site and browse 
> > around to find things then to run into issues where you have to go 
> > somewhere else (with different tools) to find the info.
> > 
> > even if you just put all the documentation files there, as-is (as text 
> > files even, no hyperlinks in them) they should still be there.
> 
> Then who will keep it in sync (BOTH ways)? That would be quite a lot of
> work, I think.
> 
> That said, having the documentation in a wiki is not a bad idea per se,
> but you need to keep things consistent and converging. And I believe
> (and hope) that killing Documentation/ directory is no option - I hate
> it when documentation of software I installed just tells me "look at
> this URI" (which documents a different version anyway, and it's all very
> useful when I'm sitting in a train with my notebook).

Clearly the solution is a wiki with a git backend and asciidoc for the 
formatting language. Then the wiki just has to pull from kernel.org 
occasionally, and Junio can pull from the wiki's repository when there are 
good changes there.

I'm actually only somewhat joking; I wrote a Python CGI for this at one 
point, and got as far as having it basically work, but then I couldn't 
come up with a way to safely use asciidoc to format an attacker's file.

	-Daniel
*This .sig left intentionally blank*

^ permalink raw reply

* Re: Fetching a tree from a remote server
From: Johannes Schindelin @ 2006-05-04  0:48 UTC (permalink / raw)
  To: Daniel Barkalow; +Cc: git
In-Reply-To: <Pine.LNX.4.64.0605032026070.6713@iabervon.org>

Hi,

On Wed, 3 May 2006, Daniel Barkalow wrote:

> Is there something to do the opposite of git clone -n? That is, I want to 
> fill a directory with a treeish ref, and I don't care about any history or 
> bookkeeping.

Is git-tar-tree your friend or what?

Ciao,
Dscho

^ permalink raw reply

* Re: [WARNING] please stop using git.git "next" for now
From: Junio C Hamano @ 2006-05-04  0:46 UTC (permalink / raw)
  To: git
In-Reply-To: <7vejzabt2b.fsf@assigned-by-dhcp.cox.net>

Junio C Hamano <junkio@cox.net> writes:

>> I will be working on a fix now, but in the meantime please do
>> not use the "next" branch for real work.  Sorry for the
>> breakage.
>
> Two-way merge by read-tree forgot to invalidate the directories
> a new element was added underneath.  The fix is simple and will
> be in the "next" I'll push out tonight.

OK, done.  Will be looking into "binary grep segfault" problem
next.

^ permalink raw reply

* Fetching a tree from a remote server
From: Daniel Barkalow @ 2006-05-04  0:41 UTC (permalink / raw)
  To: git

Is there something to do the opposite of git clone -n? That is, I want to 
fill a directory with a treeish ref, and I don't care about any history or 
bookkeeping. I'm doing automated builds of things stored on a slow 
machine, so I'd really benefit from not getting the history. As it is, 
it's only twice as fast as arch, when it really ought to be hundreds of 
times faster.

Also, git-archimport in 1.2.4 seems to leave master as the initial import, 
rather than either not having it or having it at the end, which is a bit 
confusing.

	-Daniel
*This .sig left intentionally blank*

^ permalink raw reply

* Re: sha1_to_hex() usage cleanup
From: Junio C Hamano @ 2006-05-04  0:36 UTC (permalink / raw)
  To: git
In-Reply-To: <Pine.LNX.4.64.0605031717190.4086@g5.osdl.org>

Linus Torvalds <torvalds@osdl.org> writes:

> Somebody on the #git channel complained that the sha1_to_hex() thing uses 
> a static buffer which caused an error message to show the same hex output 
> twice instead of showing two different ones.
>
> That's pretty easily rectified by making it uses a simple LRU of a few 
> buffers, which also allows some other users (that were aware of the buffer 
> re-use) to be written in a more straightforward manner.
>
> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
> ---
>
> This is another throw-away patch of mine. Not a big deal, but since I 
> tried it, I might as well try to submit it and see if Junio agrees..

Makes sort of sense in that the callers still need to be aware
of the magic 4 limit but as long as they are they do not have to
worry about allocation/deallocation/copying.  But is that kind
of cheat maintainable?  I dunno.

^ permalink raw reply

* [ANNOUNCE] Revamped Git homepage
From: Petr Baudis @ 2006-05-04  0:35 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Andreas Ericsson, Shawn Pearce, Nicolas Pitre, Paolo Ciarrocchi,
	Junio C Hamano, git
In-Reply-To: <Pine.LNX.4.64.0605030817580.4086@g5.osdl.org>

Dear diary, on Wed, May 03, 2006 at 05:30:26PM CEST, I got a letter
where Linus Torvalds <torvalds@osdl.org> said that...
> However, I think the _real_ issue is that Mercurial has a much nicer 
> introductory phase. The standard mercurial web-page is so much more 
> professional and nice to look at than any git page I have ever seen, and 
> let's face it: first looks _do_ count.

Yes, I've already learned earlier that this made quite a bad impression
on many people and had the homepage revamp on top of my TODO list for
the last few weeks.

Well, here we go, I've just uploaded a new version of the Git homepage;
I wonder how you feel about it now.

Obviously, it still feels rather empty and I'm certainly not much of
a webmaster myself, but I take patches and pull requests; see
http://git.or.cz/community.html for the Git homepage git repository
information.

I've borrowed Jonas Fonseca's ELinks homepage design first, but the
contents ended up almost entirely rewritten as well (except the Related
Tools section, which stayed mostly as it was). Git now poses as a real
version control system and the plumbing stuff is mentioned only in the
bottom paragraphs. ;-)


BTW, if anyone is into CSS and stuff, after half an hour of beating it
I couldn't manage to make the top bar look right - everything is shifted
slightly to the top. :/

-- 
				Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
Right now I am having amnesia and deja-vu at the same time.  I think
I have forgotten this before.

^ permalink raw reply

* Re: git-unpack-objects
From: Josh Boyer @ 2006-05-04  0:31 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Junio C Hamano, git
In-Reply-To: <Pine.LNX.4.64.0605031054300.4086@g5.osdl.org>

On 5/3/06, Linus Torvalds <torvalds@osdl.org> wrote:
>
>
> On Wed, 3 May 2006, Josh Boyer wrote:
> > >
> > > That's what you just do "git repack -a -d" for.
> >
> > But that doesn't roll exsisting packs into a new pack, does it?
>
> It does. That's what the "-a" (for "all") does.

Odd.  On one of my repos, I was seeing the correct behavior.  On
another, there were multiple packs left after doing the 'git repack -a
-d'.  Were there ever some packing bugs in older versions of git that
would have maybe produced some packs that wouldn't get deleted or
something?

At any rate, the above command does seem to do exactly what I want. 
Thanks for the help.

josh

^ permalink raw reply

* sha1_to_hex() usage cleanup
From: Linus Torvalds @ 2006-05-04  0:21 UTC (permalink / raw)
  To: Junio C Hamano, Git Mailing List


Somebody on the #git channel complained that the sha1_to_hex() thing uses 
a static buffer which caused an error message to show the same hex output 
twice instead of showing two different ones.

That's pretty easily rectified by making it uses a simple LRU of a few 
buffers, which also allows some other users (that were aware of the buffer 
re-use) to be written in a more straightforward manner.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
---

This is another throw-away patch of mine. Not a big deal, but since I 
tried it, I might as well try to submit it and see if Junio agrees..

diff --git a/diff.c b/diff.c
index 6762fce..c845c87 100644
--- a/diff.c
+++ b/diff.c
@@ -1018,14 +1018,12 @@ static void run_diff(struct diff_filepai
 	}
 
 	if (memcmp(one->sha1, two->sha1, 20)) {
-		char one_sha1[41];
 		int abbrev = o->full_index ? 40 : DEFAULT_ABBREV;
-		memcpy(one_sha1, sha1_to_hex(one->sha1), 41);
 
 		len += snprintf(msg + len, sizeof(msg) - len,
 				"index %.*s..%.*s",
-				abbrev, one_sha1, abbrev,
-				sha1_to_hex(two->sha1));
+				abbrev, sha1_to_hex(one->sha1),
+				abbrev, sha1_to_hex(two->sha1));
 		if (one->mode == two->mode)
 			len += snprintf(msg + len, sizeof(msg) - len,
 					" %06o", one->mode);
diff --git a/merge-tree.c b/merge-tree.c
index 50528d5..cc7b5bd 100644
--- a/merge-tree.c
+++ b/merge-tree.c
@@ -24,16 +24,14 @@ static const char *sha1_to_hex_zero(cons
 
 static void resolve(const char *base, struct name_entry *branch1, struct name_entry *result)
 {
-	char branch1_sha1[50];
-
 	/* If it's already branch1, don't bother showing it */
 	if (!branch1)
 		return;
-	memcpy(branch1_sha1, sha1_to_hex_zero(branch1->sha1), 41);
 
 	printf("0 %06o->%06o %s->%s %s%s\n",
 		branch1->mode, result->mode,
-		branch1_sha1, sha1_to_hex_zero(result->sha1),
+		sha1_to_hex_zero(branch1->sha1),
+		sha1_to_hex_zero(result->sha1),
 		base, result->path);
 }
 
diff --git a/sha1_file.c b/sha1_file.c
index f2d33af..5464828 100644
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -108,9 +108,10 @@ int safe_create_leading_directories(char
 
 char * sha1_to_hex(const unsigned char *sha1)
 {
-	static char buffer[50];
+	static int bufno;
+	static char hexbuffer[4][50];
 	static const char hex[] = "0123456789abcdef";
-	char *buf = buffer;
+	char *buffer = hexbuffer[3 & ++bufno], *buf = buffer;
 	int i;
 
 	for (i = 0; i < 20; i++) {

^ permalink raw reply related

* Re: gitk highlight feature
From: Linus Torvalds @ 2006-05-03 23:25 UTC (permalink / raw)
  To: Paul Mackerras; +Cc: git
In-Reply-To: <17497.14311.121872.249120@cargo.ozlabs.ibm.com>



On Thu, 4 May 2006, Paul Mackerras wrote:
> 
> On my G5:
> 
> $ git-rev-list HEAD >all-revs
> $ time git-rev-list HEAD -- arch/powerpc >ppc-revs
> real    0m2.463s
> user    0m2.265s
> sys     0m0.191s
> $ time git-diff-tree -s --stdin -- arch/powerpc <all-revs >ppc-revs2
> real    0m5.269s
> user    0m4.794s
> sys     0m0.462s

Right. One of them prunes the history (git-rev-list). The other one does 
not.

That said, you need an "-r", I guess, to "git-diff-tree".

> Why does git-diff-tree -s --stdin produce so many more revisions than
> git-rev-list?

I guess it's officially a FAQ by now: see the "bug in git log" thread the 
other day, and

        http://www.gelato.unsw.edu.au/archives/git/0604/19180.html

so in general you can get _more_ of the "real commits" with "git-rev-list 
| git-diff-tree --stdin", because it won't prune out history on 
uninteresting branches. At the same time, that effect is counter-acted by 
git-diff-tree normally ignoring merges by default, which is a bigger 
issue.

Your big problem is just the lack of "-r", though:

> The git-diff-tree output includes commits such as
> 6ba815de, which only affects arch/i386/kernel/timers/timer_tsc.c.
> Confused.

Without the -r, git-diff-tree won't actually recurse, so it hits the 
"arch/" part (which does differ, and matches te revspec), and decides it's 
done.

With the "-r" thing, you still have a noticeable difference, but now it's 
due to the difference between "log" and "diff":

   git-rev-list HEAD -- arch/powerpc | wc -l
    -> 892
   git-rev-list HEAD | git-diff-tree -r -s --stdin -- arch/powerpc/ | wc -l
    -> 838

ie "diff" doesn't show merges nomally (with -m, you _will_ get merges, but 
you'll sometimes get them twice - once against each parent ;)

		Linus

^ permalink raw reply

* Re: [WARNING] please stop using git.git "next" for now
From: Junio C Hamano @ 2006-05-03 23:13 UTC (permalink / raw)
  To: git; +Cc: linux-kernel
In-Reply-To: <7virombwro.fsf@assigned-by-dhcp.cox.net>

Junio C Hamano <junkio@cox.net> writes:

> I just noticed there is a breakage in write-tree optimization
> that uses the new cache-tree data structure in the "next"
> branch.  Switching branches with "git checkout anotherbranch"
> when your index exactly matches the current HEAD commit and then
> immediately doing write-tree produces a nonsense tree, and
> commits on top of that results in tree objects that have
> duplicated entries.
>
> I will be working on a fix now, but in the meantime please do
> not use the "next" branch for real work.  Sorry for the
> breakage.

Two-way merge by read-tree forgot to invalidate the directories
a new element was added underneath.  The fix is simple and will
be in the "next" I'll push out tonight.

Sorry for the noise.

^ permalink raw reply

* Re: gitk highlight feature
From: Paul Mackerras @ 2006-05-03 23:08 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: git
In-Reply-To: <Pine.LNX.4.64.0605030946260.4086@g5.osdl.org>

Linus Torvalds writes:

> So far, what I've wanted to highlight by is:
> 
>  - "does it touch this file/directory/pathspec"
> 
>    This is _close_ to "git-rev-list", and you can (and do) actually 
>    implement it as that, but it's stupid to do it that way. You just spend 
>    extra time. It's literally much better to do
> 
> 	cat commit-list | git-diff-tree -s --stdin -- <pathspec>
> 
>    which is a hell of a lot more efficient, since you already have the 

On my G5:

$ git-rev-list HEAD >all-revs
$ time git-rev-list HEAD -- arch/powerpc >ppc-revs
real    0m2.463s
user    0m2.265s
sys     0m0.191s
$ time git-diff-tree -s --stdin -- arch/powerpc <all-revs >ppc-revs2
real    0m5.269s
user    0m4.794s
sys     0m0.462s
$ wc ppc-revs*
   892    892  36572 ppc-revs
  5875   5875 240875 ppc-revs2

Why does git-diff-tree -s --stdin produce so many more revisions than
git-rev-list?  The git-diff-tree output includes commits such as
6ba815de, which only affects arch/i386/kernel/timers/timer_tsc.c.
Confused.

>    commit-list you're interested in (and, in fact, this allows you to do 
>    things efficiently only for the current _visible_ commits, if you want 
>    to, which might be an important optimization for large views).

I'd have to try it.  The overhead of fork/exec/process startup might
be too much to do every time the user scrolls the window, though.
Maybe what we need is some way to have git-diff-tree run as a helper
process where I can write some commits to it, then write something
that says "that's all for now" and have it finish what it's doing,
write some "end of output" indicator and flush its output buffers -
and still have the process and the pipes to/from it available for
another round later.

>  - "Does the author/committer match xyz*"
> 
>    I ended up using the "search" button for this, and it worked, but the 
>    highlight feature would just have done it much better. Especially if 
>    there was a way to do "go to next highlight", instead of just "go to 
>    next commit"

The "/" and "?" keys go to the next and previous find hit.  It sounds
like the search function is actually what you want for this, since it
does highlight the commits that match, but maybe the problem is that
the yellow highlighting tends to go away too easily.

How about a way to do a search and use the results to create a
bold highlight, which will persist even if you do another search?
Either a separate "find & highlight" button, or a way to transfer the
current find hits to the highlight?

As for "go to next/previous highlight", that sounds useful.  Rusty
wants "go to next/previous commit that is a child/parent of this one"
and "go to next/previous commit that is a descendent/ancestor of this
one and has a ref (tag, head, etc.)".

How about shift-up and shift-down for "go to previous/next highlight"?

Paul.

^ permalink raw reply

* Re: [ANNOUNCE] Git wiki
From: Petr Baudis @ 2006-05-03 23:05 UTC (permalink / raw)
  To: Joel Becker; +Cc: git
In-Reply-To: <20060503225056.GT4226@ca-server1.us.oracle.com>

Dear diary, on Thu, May 04, 2006 at 12:50:56AM CEST, I got a letter
where Joel Becker <Joel.Becker@oracle.com> said that...
> On Thu, May 04, 2006 at 12:46:45AM +0200, Petr Baudis wrote:
> > I think git ls-files isn't used directly very frequently. OTOH, you
> > don't use cg-log or git log and cg-status/git status? :) Also, most
> > people will pull.
> 
> 	I use git ls-files, becuase it's the only way I know how to
> blow away dirty state that added files.  I ran into this just yesterday,
> actually.  git checkout -f won't remove files that are unknown.
> 
>     $ git ls-files -o | xargs rm -rf

You can use cg-clean, and I think Git has got git-clean added recently.

-- 
				Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
Right now I am having amnesia and deja-vu at the same time.  I think
I have forgotten this before.

^ permalink raw reply

* Re: [ANNOUNCE] Git wiki
From: Joel Becker @ 2006-05-03 22:50 UTC (permalink / raw)
  To: Petr Baudis; +Cc: git
In-Reply-To: <20060503224645.GR27689@pasky.or.cz>

On Thu, May 04, 2006 at 12:46:45AM +0200, Petr Baudis wrote:
> I think git ls-files isn't used directly very frequently. OTOH, you
> don't use cg-log or git log and cg-status/git status? :) Also, most
> people will pull.

	I use git ls-files, becuase it's the only way I know how to
blow away dirty state that added files.  I ran into this just yesterday,
actually.  git checkout -f won't remove files that are unknown.

    $ git ls-files -o | xargs rm -rf

Joel

-- 

Life's Little Instruction Book #452

	"Never compromise your integrity."

Joel Becker
Principal Software Developer
Oracle
E-mail: joel.becker@oracle.com
Phone: (650) 506-8127

^ permalink raw reply

* [PATCH] cvsserver: use git-rev-list instead of git-log
From: Martin Langhoff @ 2006-05-03 22:53 UTC (permalink / raw)
  To: git, junkio; +Cc: Martin Langhoff
In-Reply-To: <Pine.LNX.4.64.0605030745550.4086@g5.osdl.org>

On 5/4/06, Linus Torvalds <torvalds@osdl.org> wrote:
> No it wasn't. "git log --parents" was definitely supposed to still work.
>
> That said, I suspect a git-cvsserver kind of usage is better off using
> "git-rev-list --parents HEAD" instead, which didn't break in the first
> place.

Signed-off-by: Martin Langhoff <martin@catalyst.net.nz>


---

 git-cvsserver.perl |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

a248c9614fdd130229fb5f9565abbd77bd1d0cc9
diff --git a/git-cvsserver.perl b/git-cvsserver.perl
index 11d153c..ffd9c66 100755
--- a/git-cvsserver.perl
+++ b/git-cvsserver.perl
@@ -2076,14 +2076,15 @@ sub update
     # TODO: log processing is memory bound
     # if we can parse into a 2nd file that is in reverse order
     # we can probably do something really efficient
-    my @git_log_params = ('--parents', '--topo-order');
+    my @git_log_params = ('--pretty', '--parents', '--topo-order');
 
     if (defined $lastcommit) {
         push @git_log_params, "$lastcommit..$self->{module}";
     } else {
         push @git_log_params, $self->{module};
     }
-    open(GITLOG, '-|', 'git-log', @git_log_params) or die "Cannot call git-log: $!";
+    # git-rev-list is the backend / plumbing version of git-log
+    open(GITLOG, '-|', 'git-rev-list', @git_log_params) or die "Cannot call git-rev-list: $!";
 
     my @commits;
 
-- 
1.3.1.g24e1-dirty

^ permalink raw reply related


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox