* Re: [PATCH] Clean up compatibility definitions.
From: Junio C Hamano @ 2005-12-06 3:17 UTC (permalink / raw)
To: Petr Baudis; +Cc: git, Alex Riesen
In-Reply-To: <20051205231203.GG22159@pasky.or.cz>
Petr Baudis <pasky@suse.cz> writes:
> Dear diary, on Mon, Dec 05, 2005 at 09:22:42PM CET, I got a letter
> where Junio C Hamano <junkio@cox.net> said that...
>> diff --git a/git-compat-util.h b/git-compat-util.h
>> new file mode 100644
>
> What about compat/util.h or something? Nicer, shorter, and takes
> advantage of this fancy hierarchical namespace "directories" invention.
> ;-)
While I would appreciate a better name, I am afraid that is not a
particularly good one. It is not "compatibility utilities", but
compat things and util things mixed together, so it does not
belong to compat/ directory to begin with. die() and friends
are not about compatibility at all.
^ permalink raw reply
* Re: [PATCH] Add compat/setenv.c, use in git.c.
From: Junio C Hamano @ 2005-12-06 3:35 UTC (permalink / raw)
To: Jason Riedy; +Cc: git
In-Reply-To: <14404.1133806037@lotus.CS.Berkeley.EDU>
Jason Riedy <ejr@EECS.Berkeley.EDU> writes:
> And Junio C Hamano writes:
> - putenv(3) says
> - The string pointed to by string becomes part of the environment,
> - so altering the string changes the environment.
>
> Good catch, thanks. The Solaris man page first says the
> string space is "no longer used", but at the very end warns
> against using an automatic variable. Chalk one up for lousy
> docs.
Same thing for 5.9.
With the "compat update" patch from last night, I managed to
build on a borrowed sparc with Solaris 5.9, but I needed
NO_SETENV myself. I'd like to throw in another Makefile patch
to catch both 5.8 and 5.9 for this, but would appreciate if
people with various vintage of Solaris boxes can give some
inputs before doing that.
This was done with somewhat stripped down configuration. I had
to say NO_EXPAT, libiconv was needed but iconv and openssl were
installed at nonstandard places, python was 2.3 so I also said
PYTHON_PATH and WITH_OWN_SUBPROCESS_PY from the make command
line. But the borrowed box is not what I administer myself, so
I declare victory for now.
^ permalink raw reply
* [PATCH] Added documentation for few missing options.
From: Jon Loeliger @ 2005-12-06 5:13 UTC (permalink / raw)
To: git
More $ shell prompts in examples.
Minor English grammar improvements.
Added a few "See Also"s.
Use back-ticks on more command examples.
Signed-off-by: Jon Loeliger <jdl@freescale.com>
---
Documentation/git-checkout-index.txt | 78 +++++++++++++++++++++-------------
Documentation/git-init-db.txt | 27 ++++++++++--
Documentation/git-prune-packed.txt | 11 +++--
Documentation/git-read-tree.txt | 74 ++++++++++++++++++--------------
Documentation/git-update-index.txt | 20 +++++++--
Documentation/git-write-tree.txt | 14 +++---
6 files changed, 142 insertions(+), 82 deletions(-)
applies-to: 0e248e1eed0d5aedd0054cf273df03460047ebc9
4baf91676c2462796137e93917c75f2e14ebb877
diff --git a/Documentation/git-checkout-index.txt b/Documentation/git-checkout-index.txt
index 5bff486..97eef22 100644
--- a/Documentation/git-checkout-index.txt
+++ b/Documentation/git-checkout-index.txt
@@ -45,53 +45,71 @@ OPTIONS
The order of the flags used to matter, but not anymore.
-Just doing "git-checkout-index" does nothing. You probably meant
-"git-checkout-index -a". And if you want to force it, you want
-"git-checkout-index -f -a".
+Just doing `git-checkout-index` does nothing. You probably meant
+`git-checkout-index -a`. And if you want to force it, you want
+`git-checkout-index -f -a`.
Intuitiveness is not the goal here. Repeatability is. The reason for
-the "no arguments means no work" thing is that from scripts you are
-supposed to be able to do things like:
+the "no arguments means no work" behavior is that from scripts you are
+supposed to be able to do:
- find . -name '*.h' -print0 | xargs -0 git-checkout-index -f --
+----------------
+$ find . -name '*.h' -print0 | xargs -0 git-checkout-index -f --
+----------------
which will force all existing `*.h` files to be replaced with their
cached copies. If an empty command line implied "all", then this would
force-refresh everything in the index, which was not the point.
-To update and refresh only the files already checked out:
-
- git-checkout-index -n -f -a && git-update-index --ignore-missing --refresh
-
-Oh, and the "--" is just a good idea when you know the rest will be
-filenames. Just so that you wouldn't have a filename of "-a" causing
-problems (not possible in the above example, but get used to it in
-scripting!).
-
-The prefix ability basically makes it trivial to use
-git-checkout-index as an "export as tree" function. Just read the
-desired tree into the index, and do a
-
- git-checkout-index --prefix=git-export-dir/ -a
-
-and git-checkout-index will "export" the index into the specified
+The `--` is just a good idea when you know the rest will be filenames;
+it will prevent problems with a filename of, for example, `-a`.
+Using `--` is probably a good policy in scripts.
+
+
+EXAMPLES
+--------
+To update and refresh only the files already checked out::
++
+----------------
+$ git-checkout-index -n -f -a && git-update-index --ignore-missing --refresh
+----------------
+
+Using `git-checkout-index` to "export an entire tree"::
+ The prefix ability basically makes it trivial to use
+ `git-checkout-index` as an "export as tree" function.
+ Just read the desired tree into the index, and do:
++
+----------------
+$ git-checkout-index --prefix=git-export-dir/ -a
+----------------
++
+`git-checkout-index` will "export" the index into the specified
directory.
++
+The final "/" is important. The exported name is literally just
+prefixed with the specified string. Contrast this with the
+following example.
+
+Export files with a prefix::
++
+----------------
+$ git-checkout-index --prefix=.merged- Makefile
+----------------
++
+This will check out the currently cached copy of `Makefile`
+into the file `.merged-Makefile`.
-NOTE The final "/" is important. The exported name is literally just
-prefixed with the specified string, so you can also do something like
-
- git-checkout-index --prefix=.merged- Makefile
-
-to check out the currently cached copy of `Makefile` into the file
-`.merged-Makefile`
Author
------
Written by Linus Torvalds <torvalds@osdl.org>
+
Documentation
--------------
-Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
+Documentation by David Greaves,
+Junio C Hamano and the git-list <git@vger.kernel.org>.
+
GIT
---
diff --git a/Documentation/git-init-db.txt b/Documentation/git-init-db.txt
index ef1826a..4486f0c 100644
--- a/Documentation/git-init-db.txt
+++ b/Documentation/git-init-db.txt
@@ -8,7 +8,14 @@ git-init-db - Creates an empty git repos
SYNOPSIS
--------
-'git-init-db'
+'git-init-db' [--template=<template_directory>]
+
+
+OPTIONS
+-------
+--template=<template_directory>::
+ Provide the directory in from which templates will be used.
+
DESCRIPTION
-----------
@@ -16,14 +23,26 @@ This simply creates an empty git reposit
and `.git/object/??/`, `.git/refs/heads` and `.git/refs/tags` directories,
and links `.git/HEAD` symbolically to `.git/refs/heads/master`.
-If the 'GIT_DIR' environment variable is set then it specifies a path
+If the `$GIT_DIR` environment variable is set then it specifies a path
to use instead of `./.git` for the base of the repository.
-If the object storage directory is specified via the 'GIT_OBJECT_DIRECTORY'
+If the object storage directory is specified via the `$GIT_OBJECT_DIRECTORY`
environment variable then the sha1 directories are created underneath -
otherwise the default `$GIT_DIR/objects` directory is used.
-"git-init-db" won't hurt an existing repository.
+`git-init-db` won't hurt an existing repository.
+
+
+EXAMPLES
+--------
+
+Start a new git repository for an existing code base::
++
+----------------
+$ cd /path/to/my/codebase
+$ git-init-db
+----------------
+
Author
diff --git a/Documentation/git-prune-packed.txt b/Documentation/git-prune-packed.txt
index 8d96a91..37c53a9 100644
--- a/Documentation/git-prune-packed.txt
+++ b/Documentation/git-prune-packed.txt
@@ -9,19 +9,22 @@ residing in a pack file.
SYNOPSIS
--------
-'git-prune-packed'
+'git-prune-packed' [-n]
+
DESCRIPTION
-----------
-This program search the GIT_OBJECT_DIR for all objects that currently exist in
-a pack file as well as the independent object directories.
+This program search the `$GIT_OBJECT_DIR` for all objects that currently
+exist in a pack file as well as the independent object directories.
All such extra objects are removed.
A pack is a collection of objects, individually compressed, with delta
compression applied, stored in a single file, with an associated index file.
-Packs are used to reduce the load on mirror systems, backup engines, disk storage, etc.
+Packs are used to reduce the load on mirror systems, backup engines,
+disk storage, etc.
+
OPTIONS
-------
diff --git a/Documentation/git-read-tree.txt b/Documentation/git-read-tree.txt
index 6e92e4a..4377362 100644
--- a/Documentation/git-read-tree.txt
+++ b/Documentation/git-read-tree.txt
@@ -15,15 +15,15 @@ DESCRIPTION
-----------
Reads the tree information given by <tree-ish> into the index,
but does not actually *update* any of the files it "caches". (see:
-git-checkout-index)
+gitlink:git-checkout-index[1])
Optionally, it can merge a tree into the index, perform a
-fast-forward (i.e. 2-way) merge, or a 3-way merge, with the -m
-flag. When used with -m, the -u flag causes it to also update
+fast-forward (i.e. 2-way) merge, or a 3-way merge, with the `-m`
+flag. When used with `-m`, the `-u` flag causes it to also update
the files in the work tree with the result of the merge.
-Trivial merges are done by "git-read-tree" itself. Only conflicting paths
-will be in unmerged state when "git-read-tree" returns.
+Trivial merges are done by `git-read-tree` itself. Only conflicting paths
+will be in unmerged state when `git-read-tree` returns.
OPTIONS
-------
@@ -56,7 +56,7 @@ OPTIONS
Merging
-------
-If '-m' is specified, "git-read-tree" can perform 3 kinds of
+If `-m` is specified, `git-read-tree` can perform 3 kinds of
merge, a single tree merge if only 1 tree is given, a
fast-forward merge with 2 trees, or a 3-way merge if 3 trees are
provided.
@@ -65,23 +65,23 @@ provided.
Single Tree Merge
~~~~~~~~~~~~~~~~~
If only 1 tree is specified, git-read-tree operates as if the user did not
-specify '-m', except that if the original index has an entry for a
+specify `-m`, except that if the original index has an entry for a
given pathname, and the contents of the path matches with the tree
being read, the stat info from the index is used. (In other words, the
index's stat()s take precedence over the merged tree's).
-That means that if you do a "git-read-tree -m <newtree>" followed by a
-"git-checkout-index -f -u -a", the "git-checkout-index" only checks out
+That means that if you do a `git-read-tree -m <newtree>` followed by a
+`git-checkout-index -f -u -a`, the `git-checkout-index` only checks out
the stuff that really changed.
-This is used to avoid unnecessary false hits when "git-diff-files" is
-run after git-read-tree.
+This is used to avoid unnecessary false hits when `git-diff-files` is
+run after `git-read-tree`.
Two Tree Merge
~~~~~~~~~~~~~~
-Typically, this is invoked as "git-read-tree -m $H $M", where $H
+Typically, this is invoked as `git-read-tree -m $H $M`, where $H
is the head commit of the current repository, and $M is the head
of a foreign tree, which is simply ahead of $H (i.e. we are in a
fast forward situation).
@@ -94,7 +94,7 @@ the following:
2. The user wants to fast-forward to $M.
-In this case, the "git-read-tree -m $H $M" command makes sure
+In this case, the `git-read-tree -m $H $M` command makes sure
that no local change is lost as the result of this "merge".
Here are the "carry forward" rules:
@@ -141,13 +141,13 @@ operating under the -u flag.
When this form of git-read-tree returns successfully, you can
see what "local changes" you made are carried forward by running
-"git-diff-index --cached $M". Note that this does not
-necessarily match "git-diff-index --cached $H" would have
+`git-diff-index --cached $M`. Note that this does not
+necessarily match `git-diff-index --cached $H` would have
produced before such a two tree merge. This is because of cases
18 and 19 --- if you already had the changes in $M (e.g. maybe
-you picked it up via e-mail in a patch form), "git-diff-index
---cached $H" would have told you about the change before this
-merge, but it would not show in "git-diff-index --cached $M"
+you picked it up via e-mail in a patch form), `git-diff-index
+--cached $H` would have told you about the change before this
+merge, but it would not show in `git-diff-index --cached $M`
output after two-tree merge.
@@ -156,18 +156,20 @@ output after two-tree merge.
Each "index" entry has two bits worth of "stage" state. stage 0 is the
normal one, and is the only one you'd see in any kind of normal use.
-However, when you do "git-read-tree" with three trees, the "stage"
+However, when you do `git-read-tree` with three trees, the "stage"
starts out at 1.
This means that you can do
- git-read-tree -m <tree1> <tree2> <tree3>
+----------------
+$ git-read-tree -m <tree1> <tree2> <tree3>
+----------------
and you will end up with an index with all of the <tree1> entries in
"stage1", all of the <tree2> entries in "stage2" and all of the
<tree3> entries in "stage3".
-Furthermore, "git-read-tree" has special-case logic that says: if you see
+Furthermore, `git-read-tree` has special-case logic that says: if you see
a file that matches in all respects in the following states, it
"collapses" back to "stage0":
@@ -180,7 +182,7 @@ a file that matches in all respects in t
- stage 1 and stage 3 are the same and stage 2 is different take
stage 2 (some work has been done on stage 2)
-The "git-write-tree" command refuses to write a nonsensical tree, and it
+The `git-write-tree` command refuses to write a nonsensical tree, and it
will complain about unmerged entries if it sees a single entry that is not
stage 0.
@@ -220,8 +222,8 @@ populated. Here is an outline of how th
matching "stage1" entry if it exists too. .. all the normal
trivial rules ..
-You would normally use "git-merge-index" with supplied
-"git-merge-one-file" to do this last step. The script
+You would normally use `git-merge-index` with supplied
+`git-merge-one-file` to do this last step. The script
does not touch the files in the work tree, and the entire merge
happens in the index file. In other words, there is no need to
worry about what is in the working directory, since it is never
@@ -239,27 +241,33 @@ This is done to prevent you from losing
changes. To illustrate, suppose you start from what has been
commited last to your repository:
- $ JC=`git-rev-parse --verify "HEAD^0"`
- $ git-checkout-index -f -u -a $JC
+----------------
+$ JC=`git-rev-parse --verify "HEAD^0"`
+$ git-checkout-index -f -u -a $JC
+----------------
You do random edits, without running git-update-index. And then
you notice that the tip of your "upstream" tree has advanced
since you pulled from him:
- $ git-fetch rsync://.... linus
- $ LT=`cat .git/MERGE_HEAD`
+----------------
+$ git-fetch rsync://.... linus
+$ LT=`cat .git/MERGE_HEAD`
+----------------
Your work tree is still based on your HEAD ($JC), but you have
some edits since. Three-way merge makes sure that you have not
added or modified index 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-merge-index git-merge-one-file -a
- $ echo "Merge with Linus" | \
- git-commit-tree `git-write-tree` -p $JC -p $LT
+----------------
+$ git-read-tree -m -u `git-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
+----------------
-what you would commit is a pure merge between $JC and LT without
+what you would commit is a pure merge between $JC and $LT without
your work-in-progress changes, and your work tree would be
updated to the result of the merge.
diff --git a/Documentation/git-update-index.txt b/Documentation/git-update-index.txt
index fdcb8be..e4678cd 100644
--- a/Documentation/git-update-index.txt
+++ b/Documentation/git-update-index.txt
@@ -123,7 +123,9 @@ merging.
To pretend you have a file with mode and sha1 at path, say:
- $ git-update-index --cacheinfo mode sha1 path
+----------------
+$ git-update-index --cacheinfo mode sha1 path
+----------------
'--info-only' is used to register files without placing them in the object
database. This is useful for status-only repositories.
@@ -138,7 +140,9 @@ Examples
--------
To update and refresh only the files already checked out:
- git-checkout-index -n -f -a && git-update-index --ignore-missing --refresh
+----------------
+$ git-checkout-index -n -f -a && git-update-index --ignore-missing --refresh
+----------------
Configuration
@@ -146,12 +150,18 @@ Configuration
The command honors `core.filemode` configuration variable. If
your repository is on an filesystem whose executable bits are
-unreliable, this should be set to 'false'. This causes the
-command to ignore differences in file modes recorded in the
-index and the file mode on the filesystem if they differ only on
+unreliable, this should be set to 'false' (see gitlink:git-repo-config[1]).
+This causes the command to ignore differences in file modes recorded
+in the index and the file mode on the filesystem if they differ only on
executable bit. On such an unfortunate filesystem, you may
need to use `git-update-index --chmod=`.
+
+See Also
+--------
+gitlink:git-repo-config[1]
+
+
Author
------
Written by Linus Torvalds <torvalds@osdl.org>
diff --git a/Documentation/git-write-tree.txt b/Documentation/git-write-tree.txt
index abee05f..77e12cb 100644
--- a/Documentation/git-write-tree.txt
+++ b/Documentation/git-write-tree.txt
@@ -14,19 +14,21 @@ DESCRIPTION
-----------
Creates a tree object using the current index.
-The index must be merged.
+The index must be in a fully merged state.
-Conceptually, "git-write-tree" sync()s the current index contents
+Conceptually, `git-write-tree` sync()s the current index contents
into a set of tree files.
In order to have that match what is actually in your directory right
-now, you need to have done a "git-update-index" phase before you did the
-"git-write-tree".
+now, you need to have done a `git-update-index` phase before you did the
+`git-write-tree`.
+
OPTIONS
-------
--missing-ok::
- Normally "git-write-tree" ensures that the objects referenced by the
- directory exist in the object database. This option disables this check.
+ Normally `git-write-tree` ensures that the objects referenced by the
+ directory exist in the object database. This option disables this
+ check.
Author
------
---
0.99.9j
^ permalink raw reply related
* Some Documentation/Usage Notes
From: Jon Loeliger @ 2005-12-06 5:21 UTC (permalink / raw)
To: git
Note to $self -- here are some tidbits ToDo:
o --help doesn't work on:
git-hash-object
git-init-db
git-write-tree
o There is an odd <any-file-on-the-filesystem> argment named
in the git-hash-object documentation. Would <file> be better
and more consistent? Or is there some subtlety that I am missing?
o Someone might want to check my --template=<dir> description
on git-init-db, or make it clearer.
o Work towards moving uniform description of all environment
variables in one includable/referenceable Documentation/ file?
^ permalink raw reply
* Re: [PATCH] Added documentation for few missing options.
From: Junio C Hamano @ 2005-12-06 6:10 UTC (permalink / raw)
To: Jon Loeliger; +Cc: git
In-Reply-To: <E1EjV8R-00014y-Sg@jdl.com>
Jon Loeliger <jdl@freescale.com> writes:
> More $ shell prompts in examples.
> Minor English grammar improvements.
> Added a few "See Also"s.
> Use back-ticks on more command examples.
>
> Signed-off-by: Jon Loeliger <jdl@freescale.com>
Thanks. You deserve to add your own name to the Documentation
section ;-).
Mostly note to myself...
> +EXAMPLES
> +--------
> +To update and refresh only the files already checked out::
> ++
> +----------------
> +$ git-checkout-index -n -f -a && git-update-index --ignore-missing --refresh
> +----------------
These days, "git-checkout-index -n -u -f -a" may a preferred
equivalent of the above.
> +OPTIONS
> +-------
> +--template=<template_directory>::
> + Provide the directory in from which templates will be used.
? "use templates stored in the named directory" ?
> @@ -220,8 +222,8 @@ populated. Here is an outline of how th
> matching "stage1" entry if it exists too. .. all the normal
> trivial rules ..
>
> -You would normally use "git-merge-index" with supplied
> -"git-merge-one-file" to do this last step. The script
> +You would normally use `git-merge-index` with supplied
> +`git-merge-one-file` to do this last step. The script
> does not touch the files in the work tree, and the entire merge
> happens in the index file. In other words, there is no need to
> worry about what is in the working directory, since it is never
The above paragraph is way out of date, as of beginning of June
2005. The current merge-one-file does smudge the working tree
during the merge. I'll rewrite it.
^ permalink raw reply
* Re: Some Documentation/Usage Notes
From: Junio C Hamano @ 2005-12-06 6:11 UTC (permalink / raw)
To: Jon Loeliger; +Cc: git
In-Reply-To: <E1EjVGk-00015M-Np@jdl.com>
Jon Loeliger <jdl@freescale.com> writes:
> Note to $self -- here are some tidbits ToDo:
>
> o --help doesn't work on:
> git-hash-object
> git-init-db
> git-write-tree
Noted. Thanks.
> o There is an odd <any-file-on-the-filesystem> argment named
> in the git-hash-object documentation. Would <file> be better
> and more consistent? Or is there some subtlety that I am missing?
The subtlety is that it is the only parameter to the coreish
command set that happily named a file outside the project
directory (i.e. you can say "git-hash-object /etc/passwd" but
you cannot say "git-update-index /etc/passwd" --- even if your
repository is at /.git, you would say "git-update-index
etc/passwd" for that). But you are right. That distinction is
irrelevant.
^ permalink raw reply
* Re: Some Documentation/Usage Notes
From: Junio C Hamano @ 2005-12-06 6:25 UTC (permalink / raw)
To: Jon Loeliger; +Cc: git
In-Reply-To: <E1EjVGk-00015M-Np@jdl.com>
Jon Loeliger <jdl@freescale.com> writes:
> o --help doesn't work on:
> git-hash-object
> git-init-db
> git-write-tree
Something like this?
-- >8 --
[PATCH] misc fixes.
- It was cumbersome to feed hash-object the file '-t' (you
could have said "./-t", though). Teach it '--' that
terminates the option list, like everybody else. There is no
way to extract usage string from the command either, so teach
it "--help" as well.
- "git-init-db junk" does not complain but just ignores "junk".
Die with the usage string in such a case.
- "git-write-tree junk" complains and dies, but it does not say
what option it supports. Die with the usage string in such a
case.
---
diff --git a/hash-object.c b/hash-object.c
index ccba11c..6227936 100644
--- a/hash-object.c
+++ b/hash-object.c
@@ -31,19 +31,30 @@ int main(int argc, char **argv)
int write_object = 0;
const char *prefix = NULL;
int prefix_length = -1;
+ int no_more_flags = 0;
for (i = 1 ; i < argc; i++) {
- if (!strcmp(argv[i], "-t")) {
- if (argc <= ++i)
- die(hash_object_usage);
- type = argv[i];
- }
- else if (!strcmp(argv[i], "-w")) {
- if (prefix_length < 0) {
- prefix = setup_git_directory();
- prefix_length = prefix ? strlen(prefix) : 0;
+ if (!no_more_flags && argv[i][0] == '-') {
+ if (!strcmp(argv[i], "-t")) {
+ if (argc <= ++i)
+ die(hash_object_usage);
+ type = argv[i];
+ }
+ else if (!strcmp(argv[i], "-w")) {
+ if (prefix_length < 0) {
+ prefix = setup_git_directory();
+ prefix_length =
+ prefix ? strlen(prefix) : 0;
+ }
+ write_object = 1;
}
- write_object = 1;
+ else if (!strcmp(argv[i], "--")) {
+ no_more_flags = 1;
+ }
+ else if (!strcmp(argv[i], "--help"))
+ usage(hash_object_usage);
+ else
+ die(hash_object_usage);
}
else {
const char *arg = argv[i];
@@ -51,6 +62,7 @@ int main(int argc, char **argv)
arg = prefix_filename(prefix, prefix_length,
arg);
hash_object(arg, type, write_object);
+ no_more_flags = 1;
}
}
return 0;
diff --git a/init-db.c b/init-db.c
index 8195b68..ead37b5 100644
--- a/init-db.c
+++ b/init-db.c
@@ -237,9 +237,7 @@ int main(int argc, char **argv)
for (i = 1; i < argc; i++, argv++) {
char *arg = argv[1];
- if (arg[0] != '-')
- break;
- else if (!strncmp(arg, "--template=", 11))
+ if (!strncmp(arg, "--template=", 11))
template_dir = arg+11;
else
die(init_db_usage);
diff --git a/write-tree.c b/write-tree.c
index 0aac32f..18507db 100644
--- a/write-tree.c
+++ b/write-tree.c
@@ -83,6 +83,8 @@ static int write_tree(struct cache_entry
return nr;
}
+static const char write_tree_usage[] = "git-write-tree [--missing-ok]";
+
int main(int argc, char **argv)
{
int i, funny;
@@ -95,8 +97,10 @@ int main(int argc, char **argv)
if (argc == 2) {
if (!strcmp(argv[1], "--missing-ok"))
missing_ok = 1;
+ else if (!strcmp(argv[1], "--help"))
+ usage(write_tree_usage);
else
- die("unknown option %s", argv[1]);
+ die(write_tree_usage);
}
if (argc > 2)
^ permalink raw reply related
* Re: announce: git browser
From: Artem Khodush @ 2005-12-06 6:40 UTC (permalink / raw)
To: Petr Baudis; +Cc: Git Mailing List
In-Reply-To: <20051205232626.GH22159@pasky.or.cz>
>
> I see. Well, how useful the big picture is? (Or rather the part of it
> you don't get by just looking at the current state.)
Yes, I see that for day-to-day development the gitk view is optimal.
I'll see if I can do something similar, but web-based.
Artem.
^ permalink raw reply
* Re: announce: git browser
From: Junio C Hamano @ 2005-12-06 6:53 UTC (permalink / raw)
To: git; +Cc: Artem Khodush
In-Reply-To: <40b2b7d90512052240t778f1c8kf182ff065687068c@mail.gmail.com>
Artem Khodush <greenkaa@gmail.com> writes:
>> I see. Well, how useful the big picture is? (Or rather the part of it
>> you don't get by just looking at the current state.)
>
> Yes, I see that for day-to-day development the gitk view is optimal.
> I'll see if I can do something similar, but web-based.
I think there are at least two web interfaces already and this
is the third one with an interesting "twist". Javascript
drawing is cute.
This is not to discourage yet another web based one, but I wish
there were an NNTP interface, that feeds each repository/branch
as a newsgroup and each commit as if it is "git-format-patch"
output, with References: pointing at its parent commit "articles".
A merge commit would probably become a multipart with usually 2
attachments (but N attachments for a N-way octopus), showing
diff from each branch.
^ permalink raw reply
* Re: [PATCH] Clean up compatibility definitions.
From: Alex Riesen @ 2005-12-06 7:15 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
In-Reply-To: <7vr78r9pg0.fsf@assigned-by-dhcp.cox.net>
On 12/5/05, Junio C Hamano <junkio@cox.net> wrote:
> >> This attempts to clean up the way various compatibility
> >> functions are defined and used.
> >> --- a/compat/mmap.c
> >> +++ b/compat/mmap.c
> >
> > I still think that compat functions should stand alone.
> > Especially if it does not costs us much (or even less than that).
> Sorry, you lost me. What do you mean by "standing alone"?
Do not depend nor use anything from the calling code (do not take
anything from git). If it has to serve as compatibility wrapper to
mmap, it better should be mmap(2): return MAP_FAILED if error, do not
exit process, do no output. I wouldn't expect open(2) to print "File
not found", would you?
Besides, MAP_FAILED is perfectly handled in calling layers. If they
even print out errno, the case is completely covered and simplier
handled.
^ permalink raw reply
* Re: [PATCH] Clean up compatibility definitions.
From: Junio C Hamano @ 2005-12-06 7:31 UTC (permalink / raw)
To: Alex Riesen; +Cc: git
In-Reply-To: <81b0412b0512052315p1917a04ek264c14abf41a1027@mail.gmail.com>
Alex Riesen <raa.lkml@gmail.com> writes:
> ... return MAP_FAILED if error, do not
> exit process, do no output.
Ah, that is what you meant. I agree.
^ permalink raw reply
* Re: announce: git browser
From: Artem Khodush @ 2005-12-06 7:31 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
In-Reply-To: <7voe3u67ik.fsf@assigned-by-dhcp.cox.net>
> I think there are at least two web interfaces already
The web does not care how many web pages it has :-)
> This is not to discourage yet another web based one, but I wish
> there were an NNTP interface, that feeds each repository/branch
> as a newsgroup and each commit as if it is "git-format-patch"
> output, with References: pointing at its parent commit "articles".
>
> A merge commit would probably become a multipart with usually 2
> attachments (but N attachments for a N-way octopus), showing
> diff from each branch.
I'll see if I can do something with Perl and Net::NNTP..
^ permalink raw reply
* Re: [PATCH] Clean up compatibility definitions.
From: Alex Riesen @ 2005-12-06 7:35 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Johannes Schindelin, git
In-Reply-To: <20051205213929.GB4443@steel.home>
On 12/5/05, Alex Riesen <raa.lkml@gmail.com> wrote:
> Junio C Hamano, Mon, Dec 05, 2005 21:51:56 +0100:
> > >> This attempts to clean up the way various compatibility
> > >> functions are defined and used.
> > >
> > > You sure you want that before 1.0?
> >
> > I think this is mostly an obvious clean-up, but I do not have
> > enough test environments, so ...
> I will do cygwin. Tomorrow, that is.
The patch works on cygwin. I let the tests run, too.
^ permalink raw reply
* Re: announce: git browser
From: Junio C Hamano @ 2005-12-06 7:45 UTC (permalink / raw)
To: Artem Khodush; +Cc: git
In-Reply-To: <40b2b7d90512052331s22adb055y9f99b8cafe20c0c3@mail.gmail.com>
Artem Khodush <greenkaa@gmail.com> writes:
>> This is not to discourage yet another web based one, but I wish
>> there were an NNTP interface, that feeds each repository/branch
>> as a newsgroup and each commit as if it is "git-format-patch"
>> output, with References: pointing at its parent commit "articles".
>>
>> A merge commit would probably become a multipart with usually 2
>> attachments (but N attachments for a N-way octopus), showing
>> diff from each branch.
>
> I'll see if I can do something with Perl and Net::NNTP..
"Ask and it shall be given you" ;-)
In case it was not obvious, I was talking about an NNTP server,
not a client.
You would probably have to keep a mapping between sequence
number and commit object name in each "newsgroup", which is the
only nontrivial part.
^ permalink raw reply
* Re: make gitfakemmap standalone to fix linking error in git.c
From: Alex Riesen @ 2005-12-06 7:49 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
In-Reply-To: <7vvey39pto.fsf@assigned-by-dhcp.cox.net>
On 12/5/05, Junio C Hamano <junkio@cox.net> wrote:
> >> > Why does it always happen...
> >> Because you touched you did not absolutely have to ;-).
> >
> > well, git$(X) didn't link...
>
> I meant your change to the "if ()" expression in gitfakemmap().
> Does the change have anything to do with git$X linkage? I think
> not.
Oh, yes. Sorry. Too much sorries recently :(
^ permalink raw reply
* Re: [PATCH] Clean up compatibility definitions.
From: Junio C Hamano @ 2005-12-06 7:58 UTC (permalink / raw)
To: Alex Riesen; +Cc: git
In-Reply-To: <81b0412b0512052335i43da5d34xf2ef78e66e40c6ee@mail.gmail.com>
Alex Riesen <raa.lkml@gmail.com> writes:
> On 12/5/05, Alex Riesen <raa.lkml@gmail.com> wrote:
>> Junio C Hamano, Mon, Dec 05, 2005 21:51:56 +0100:
>> > >> This attempts to clean up the way various compatibility
>> > >> functions are defined and used.
>> > >
>> > > You sure you want that before 1.0?
>> >
>> > I think this is mostly an obvious clean-up, but I do not have
>> > enough test environments, so ...
>> I will do cygwin. Tomorrow, that is.
>
> The patch works on cygwin. I let the tests run, too.
Thanks. I've had a chance to try the one in the "master" branch
on cygwin myself today and it seemed to work OK. I did a
partial build on Solaris 5.9 as well.
^ permalink raw reply
* Re: [PATCH] Clean up compatibility definitions.
From: Alex Riesen @ 2005-12-06 8:07 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
In-Reply-To: <7vk6ei65r6.fsf@assigned-by-dhcp.cox.net>
[-- Attachment #1: Type: text/plain, Size: 605 bytes --]
On 12/6/05, Junio C Hamano <junkio@cox.net> wrote:
> > ... return MAP_FAILED if error, do not
> > exit process, do no output.
> Ah, that is what you meant. I agree.
now, while we agree, how about the patch removing "user interface"
from gitfakemmap altogether? The patch is not really tested (running
tests is not useful in this case), but I looked over the call sites,
and they seem either to handle mmap's or the previous open's return
values.
One exception is in config.c where neither is handled, the code will
race between stat and open.
Signed-off-by: Alex Riesen <fork0@gmail.com>
[-- Attachment #2: 0004-cleanup-mmap-fake.-No-need-to-output-anything-callers-handle-the-return-value.txt --]
[-- Type: text/plain, Size: 849 bytes --]
cleanup mmap fake. No need to output anything, callers handle the return value
Signed-off-by: Alex Riesen <fork0@gmail.com>
---
compat/mmap.c | 8 +++++---
1 files changed, 5 insertions(+), 3 deletions(-)
311da12b7aaca9b7329a07807e1ce4afba4bff77
diff --git a/compat/mmap.c b/compat/mmap.c
index 55cb120..32d7a30 100644
--- a/compat/mmap.c
+++ b/compat/mmap.c
@@ -8,15 +8,17 @@ void *gitfakemmap(void *start, size_t le
{
int n = 0;
- if (start != NULL || !(flags & MAP_PRIVATE))
- die("Invalid usage of gitfakemmap.");
+ if (start != NULL || !(flags & MAP_PRIVATE)) {
+ errno = ENOTSUP;
+ return MAP_FAILED;
+ }
if (lseek(fd, offset, SEEK_SET) < 0) {
errno = EINVAL;
return MAP_FAILED;
}
- start = xmalloc(length);
+ start = malloc(length);
if (start == NULL) {
errno = ENOMEM;
return MAP_FAILED;
--
0.99.9.GIT
^ permalink raw reply related
* Re: [PATCH] Clean up compatibility definitions.
From: Junio C Hamano @ 2005-12-06 8:11 UTC (permalink / raw)
To: git
In-Reply-To: <81b0412b0512060007s589e1d0dr4f47da68a7f3567a@mail.gmail.com>
Alex Riesen <raa.lkml@gmail.com> writes:
> On 12/6/05, Junio C Hamano <junkio@cox.net> wrote:
>> > ... return MAP_FAILED if error, do not
>> > exit process, do no output.
>> Ah, that is what you meant. I agree.
>
> now, while we agree, how about the patch removing "user interface"
> from gitfakemmap altogether?
> 311da12b7aaca9b7329a07807e1ce4afba4bff77
> diff --git a/compat/mmap.c b/compat/mmap.c
> index 55cb120..32d7a30 100644
> --- a/compat/mmap.c
> +++ b/compat/mmap.c
> @@ -8,15 +8,17 @@ void *gitfakemmap(void *start, size_t le
> {
> int n = 0;
>
> - if (start != NULL || !(flags & MAP_PRIVATE))
> - die("Invalid usage of gitfakemmap.");
> + if (start != NULL || !(flags & MAP_PRIVATE)) {
> + errno = ENOTSUP;
> + return MAP_FAILED;
> + }
I've considered this one after hearing what you meant by your
previous comment, but I am slightly in favor of keeping this
die(); what would trigger this is a programmer error, and the
extra error message from die() makes it obvious, although I
agree that it is unclean from purist point of view.
On the other hand,
> - start = xmalloc(length);
> + start = malloc(length);
This one I'd agree with 100%.
^ permalink raw reply
* Re: announce: git browser
From: Artem Khodush @ 2005-12-06 8:13 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
In-Reply-To: <7vd5ka653t.fsf@assigned-by-dhcp.cox.net>
>
> In case it was not obvious, I was talking about an NNTP server,
> not a client.
>
> You would probably have to keep a mapping between sequence
> number and commit object name in each "newsgroup", which is the
> only nontrivial part.
And the reason why special NNTP server is needed is, I guess,
that plain NNTP server will not be able to cope with all the diffs
stored in message database? Well, but then, the newsgroups
will not be distributable..
Or is there any other reason?
^ permalink raw reply
* Re: announce: git browser
From: Junio C Hamano @ 2005-12-06 8:19 UTC (permalink / raw)
To: git
In-Reply-To: <40b2b7d90512060013j23345bf3o2021080edcfbd9c0@mail.gmail.com>
Artem Khodush <greenkaa@gmail.com> writes:
> Or is there any other reason?
Just for fun ;-).
^ permalink raw reply
* Re: announce: git browser
From: Artem Khodush @ 2005-12-06 8:56 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
In-Reply-To: <7vpsoa4oye.fsf@assigned-by-dhcp.cox.net>
>
> > Or is there any other reason?
>
> Just for fun ;-).
And then, it could be taught to apply posted patches, which could be
even more fun.. :-)
^ permalink raw reply
* Re: Wine + GIT
From: Marco Costalba @ 2005-12-06 9:02 UTC (permalink / raw)
To: Mike McCormack; +Cc: git
In-Reply-To: <4394CD68.8020500@codeweavers.com>
Mike McCormack wrote:
> Hi All,
>
> The Wine project has started maintaining a wine.git in parallel to the
> Wine CVS. To introduce Wine developers to GIT, we've put together a
> short introduction on the Wine Wiki on using GIT to maintain patches.
> You can find it at:
>
> http://wiki.winehq.org/GitWine
>
> Comments, flames, corrections and additions welcome :)
>
about
"Finally, there's a nice (but a bit slow) tool to view your GIT repository named
[WWW] gitk. It gives you a view of the repository that looks like this:"
May I sugest also qgit (http://sourceforge.net/projects/qgit).
It's faster then gitk and has some more feature too.
Thanks
Marco
___________________________________
Yahoo! Mail: gratis 1GB per i messaggi e allegati da 10MB
http://mail.yahoo.it
^ permalink raw reply
* Re: announce: git browser
From: Junio C Hamano @ 2005-12-06 9:09 UTC (permalink / raw)
To: Artem Khodush; +Cc: git
In-Reply-To: <40b2b7d90512060056i5ce75855q31b613d1b2a404dc@mail.gmail.com>
Artem Khodush <greenkaa@gmail.com> writes:
>> > Or is there any other reason?
>>
>> Just for fun ;-).
>
> And then, it could be taught to apply posted patches, which could be
> even more fun.. :-)
By the way, by "fun" I do not mean "joke" at all.
You earlier said such newsgroups cannot be distributed, but I
would say why not. They will be moderated groups and patches
will go to the "moderator" who applies the patches to the
branches.
Reading such a newsgroup would be like going through
"commitdiff" link on gitweb one commit after another, but is
more efficient and would match the workflow of people who review
lots of patches on mailing lists.
^ permalink raw reply
* Re: [PATCH] Clean up compatibility definitions.
From: Petr Baudis @ 2005-12-06 9:53 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git, Alex Riesen
In-Reply-To: <7vacfe9amx.fsf@assigned-by-dhcp.cox.net>
Dear diary, on Tue, Dec 06, 2005 at 04:17:58AM CET, I got a letter
where Junio C Hamano <junkio@cox.net> said that...
> Petr Baudis <pasky@suse.cz> writes:
>
> > Dear diary, on Mon, Dec 05, 2005 at 09:22:42PM CET, I got a letter
> > where Junio C Hamano <junkio@cox.net> said that...
> >> diff --git a/git-compat-util.h b/git-compat-util.h
> >> new file mode 100644
> >
> > What about compat/util.h or something? Nicer, shorter, and takes
> > advantage of this fancy hierarchical namespace "directories" invention.
> > ;-)
>
> While I would appreciate a better name, I am afraid that is not a
> particularly good one. It is not "compatibility utilities", but
> compat things and util things mixed together, so it does not
> belong to compat/ directory to begin with. die() and friends
> are not about compatibility at all.
Then perhaps the .h file should be split? At least the "compat-util"
name did not suggest combination to me, but specialization (not
"compatibility and utils" but "compatibility utils").
--
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
* Cygwin test failure in t6021-merge-criss-cross.sh
From: Tim O'Callaghan @ 2005-12-06 12:40 UTC (permalink / raw)
To: git
I tried build-testing the latest version of git, and the tests reported
this error:
---------
*** t6021-merge-criss-cross.sh ***
* FAIL 1: prepare repository
echo "1
2
3
4
5
6
7
8
9" > file &&
git add file &&
git commit -m "Initial commit" file &&
git branch A &&
git branch B &&
git checkout A &&
echo "1
2
3
4
5
6
7
8 changed in B8, branch A
9" > file &&
git commit -m "B8" file &&
git checkout B &&
echo "1
2
3 changed in C3, branch B
4
5
6
7
8
9
" > file &&
git commit -m "C3" file &&
git branch C3 &&
git merge "pre E3 merge" B A &&
echo "1
2
3 changed in E3, branch B. New file size
4
5
6
7
8 changed in B8, branch A
9
" > file &&
git commit -m "E3" file &&
git checkout A &&
git merge "pre D8 merge" A C3 &&
echo "1
2
3 changed in C3, branch B
4
5
6
7
8 changed in D8, branch A. New file size 2
9" > file &&
git commit -m D8 file
* FAIL 2: Criss-cross merge
git merge "final merge" A B
* FAIL 3: Criss-cross merge result
cmp file file-expect
* failed 3 among 3 test(s)
make[1]: *** [t6021-merge-criss-cross.sh] Error 1
make[1]: Leaving directory `/cygdrive/c/home/tim/projects/CygwinPorts/git_git/t'
make: *** [test] Error 2
----
Is there any more information i need to provide?
Tim.
"I've worked myself up from nothing to a state of supreme poverty."
-- Groucho Marx
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox