* Filtering mode changes
From: Stefan Naewe @ 2008-08-01 11:25 UTC (permalink / raw)
To: git
Hi there.
Here's my story:
- I did some minor modifications to a repo that I want to 'give back'.
- I worked on my own branch (of course).
- I was stupid to edit the files (that live on a linux box) through a windows
network share.
- When I created diffs (using 'git format-patch') to send send 'upstream', I
noticed that the edited files got their executable bit set (old mode 100644 ->
new mode 100755)
- I created another commit to undo the mode changes.
My question:
Is there a way to create clean diffs (between master and my branch) that don't
contain the 'double mode change' (from 644 to 755 to 644) ?
TIA
Stefan
^ permalink raw reply
* Re: [PATCH] git-svn now work with crlf convertion enabled.
From: Alexander Litvinov @ 2008-08-01 11:27 UTC (permalink / raw)
To: Dmitry Potapov; +Cc: Junio C Hamano, git, Eric Wong
In-Reply-To: <37fcd2780808010044m424f8d8en67a4e50363238e4d@mail.gmail.com>
> git-svn uses git hash-object --stdin-paths, which means that it reads
> filenames from the standard input, so one optional parameter cannot
> help here.
We could add some parameter ti git-hash-object to tell that we will pass two
lines per each file: real file name and proposed file name in workdir.
In this case git-hash-object will be able to do proper convertion.
The main proble is the tracking original file from svn. Propably we could use
some special dir in worktree to store original file. Or we could make special
branch to track that files and second one to store converted files.
^ permalink raw reply
* Re: Merging submodules
From: Santi Béjar @ 2008-08-01 11:34 UTC (permalink / raw)
To: H.Merijn Brand; +Cc: Petr Baudis, Brian Gernhardt, Git List, Lars Noschinski
In-Reply-To: <20080801123523.33c37e08@pc09.procura.nl>
On Fri, Aug 1, 2008 at 12:35, H.Merijn Brand <h.m.brand@xs4all.nl> wrote:
>
> After we join/merge these into the super-project, we're going to remove
> the sup-repos, so all new commits will be made in the super-repo.
If you'll remove the subrepos, the best thing would be to rewrite the
history on those subrepos just moving all the path to the
corresponding subfolder (with git-filter-branch, and you have exactly
what you need at the end of the example section in the manpage). And
then just do a normal merge. Or, even, you could try to create a
project with everything there in the correct order and location, I
don't know if git-filter-branch or git-fast-import/export (you have
some examples in git.git in contrib/fast-import) can do it, but if you
get it, please, post it here because it can be useful for others).
Santi
^ permalink raw reply
* Is there any hope (format-patch)??
From: Matti Kaasinen @ 2008-08-01 12:05 UTC (permalink / raw)
To: git
Hi!
Is there any hope with following procedure:
I took reporitory from linux git:
# git clone
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
For getting patches to make recent version from v2.6.26-rc3 I executed:
# git format-patch -o patchdir v2.6.26-rc3..origin
This produced 9486 patches, two of which were empty. They both appeared
to have two references in git.kernel.org archive so that newer ones were
empy.
Then I checked out v2.6.26-rc3 to a new branch and patched it with
at91patch/maxim.org.za that was produced against v2.6.26-rc3. That
worked out without complaints.
Then I ran:
#git quiltimport --patches patchdir
I suppose, it was the fourth patch of 9486 that failed. Fail did not
come from any of those parts patched with at91 patch. Is this anything
that should work? at91 patch fails if I try it right-away over the HEAD
branch.
cheers,
Matti Kaasinen
^ permalink raw reply
* Re: Filtering mode changes
From: Matt Pearson @ 2008-08-01 12:23 UTC (permalink / raw)
To: Stefan Naewe; +Cc: git
In-Reply-To: <loom.20080801T111754-982@post.gmane.org>
On Fri, Aug 1, 2008 at 7:25 AM, Stefan Naewe <stefan.naewe+git@gmail.com> wrote:
> Hi there.
>
> Here's my story:
>
> - I did some minor modifications to a repo that I want to 'give back'.
> - I worked on my own branch (of course).
> - I was stupid to edit the files (that live on a linux box) through a windows
> network share.
> - When I created diffs (using 'git format-patch') to send send 'upstream', I
> noticed that the edited files got their executable bit set (old mode 100644 ->
> new mode 100755)
> - I created another commit to undo the mode changes.
>
> My question:
>
> Is there a way to create clean diffs (between master and my branch) that don't
> contain the 'double mode change' (from 644 to 755 to 644) ?
>
You probably want to use 'git rebase -i master' and the 'squash'
command to combine the changes into one. If multiple commits messed up
the permissions, use the 'edit' command and the rebase will stop after
the specified commits, allowing you to fix things up, then do 'git
commit --amend'. Use 'git rebase --continue' to continue fixing the
patches.
^ permalink raw reply
* [PATCH] gitweb: action in path with use_pathinfo
From: Giuseppe Bilotta @ 2008-08-01 12:23 UTC (permalink / raw)
To: git; +Cc: Junio C Hamano, Giuseppe Bilotta
When using path info, reduce the number of CGI parameters by embedding
the action in the path. The typicial cgiweb path is thus
$project/$action/$hash_base:$file_name or $project/$action/$hash
This is mostly backwards compatible with the old-style gitweb paths,
except when $project/$branch was used to access a branch whose name
matches a gitweb action.
Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
---
I've been thinking a long time about the best way to get rid of most
CGI parameters when using path info, and I think that the attached
patch solves the problem pretty well, since it makes most simple
(one-paramater) actions accessible as plain paths.
The only weak point I see in my approach is with -replay=>1. Since in
our case there are no CGI parameters to be replayed, I use the
corresponding variables. An alternative, safer method would probably
be to store the various request parameters in a separate hash,
obtained by merging the CGI data with the one extracted from the
request path. I didn't follow the latter route because the simpler
approach implemented in this patch seems to work without problems.
gitweb/gitweb.perl | 111 ++++++++++++++++++++++++++++++++++------------------
1 files changed, 73 insertions(+), 38 deletions(-)
diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index aa8c27c..d4ed401 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -512,6 +512,37 @@ if (defined $searchtext) {
$search_regexp = $search_use_regexp ? $searchtext : quotemeta $searchtext;
}
+# dispatch
+my %actions = (
+ "blame" => \&git_blame,
+ "blobdiff" => \&git_blobdiff,
+ "blobdiff_plain" => \&git_blobdiff_plain,
+ "blob" => \&git_blob,
+ "blob_plain" => \&git_blob_plain,
+ "commitdiff" => \&git_commitdiff,
+ "commitdiff_plain" => \&git_commitdiff_plain,
+ "commit" => \&git_commit,
+ "forks" => \&git_forks,
+ "heads" => \&git_heads,
+ "history" => \&git_history,
+ "log" => \&git_log,
+ "rss" => \&git_rss,
+ "atom" => \&git_atom,
+ "search" => \&git_search,
+ "search_help" => \&git_search_help,
+ "shortlog" => \&git_shortlog,
+ "summary" => \&git_summary,
+ "tag" => \&git_tag,
+ "tags" => \&git_tags,
+ "tree" => \&git_tree,
+ "snapshot" => \&git_snapshot,
+ "object" => \&git_object,
+ # those below don't need $project
+ "opml" => \&git_opml,
+ "project_list" => \&git_project_list,
+ "project_index" => \&git_project_index,
+);
+
# now read PATH_INFO and use it as alternative to parameters
sub evaluate_path_info {
return if defined $project;
@@ -536,6 +568,16 @@ sub evaluate_path_info {
# do not change any parameters if an action is given using the query string
return if $action;
$path_info =~ s,^\Q$project\E/*,,;
+
+ # next comes the action
+ $action = $path_info;
+ $action =~ s,/.*$,,;
+ if (exists $actions{$action}) {
+ $path_info =~ s,^\Q$action\E/*,,;
+ } else {
+ $action = undef;
+ }
+
my ($refname, $pathname) = split(/:/, $path_info, 2);
if (defined $pathname) {
# we got "project.git/branch:filename" or "project.git/branch:dir/"
@@ -549,10 +591,12 @@ sub evaluate_path_info {
}
$hash_base ||= validate_refname($refname);
$file_name ||= validate_pathname($pathname);
+ $hash ||= git_get_hash_by_path($hash_base, $file_name);
} elsif (defined $refname) {
# we got "project.git/branch"
- $action ||= "shortlog";
- $hash ||= validate_refname($refname);
+ $action ||= "shortlog";
+ $hash ||= validate_refname($refname);
+ $hash_base ||= validate_refname($refname);
}
}
evaluate_path_info();
@@ -561,37 +605,6 @@ evaluate_path_info();
our $git_dir;
$git_dir = "$projectroot/$project" if $project;
-# dispatch
-my %actions = (
- "blame" => \&git_blame,
- "blobdiff" => \&git_blobdiff,
- "blobdiff_plain" => \&git_blobdiff_plain,
- "blob" => \&git_blob,
- "blob_plain" => \&git_blob_plain,
- "commitdiff" => \&git_commitdiff,
- "commitdiff_plain" => \&git_commitdiff_plain,
- "commit" => \&git_commit,
- "forks" => \&git_forks,
- "heads" => \&git_heads,
- "history" => \&git_history,
- "log" => \&git_log,
- "rss" => \&git_rss,
- "atom" => \&git_atom,
- "search" => \&git_search,
- "search_help" => \&git_search_help,
- "shortlog" => \&git_shortlog,
- "summary" => \&git_summary,
- "tag" => \&git_tag,
- "tags" => \&git_tags,
- "tree" => \&git_tree,
- "snapshot" => \&git_snapshot,
- "object" => \&git_object,
- # those below don't need $project
- "opml" => \&git_opml,
- "project_list" => \&git_project_list,
- "project_index" => \&git_project_index,
-);
-
if (!defined $action) {
if (defined $hash) {
$action = git_get_type($hash);
@@ -649,8 +661,13 @@ sub href (%) {
if ($params{-replay}) {
while (my ($name, $symbol) = each %mapping) {
if (!exists $params{$name}) {
- # to allow for multivalued params we use arrayref form
- $params{$name} = [ $cgi->param($symbol) ];
+ if ($cgi->param($symbol)) {
+ # to allow for multivalued params we use arrayref form
+ $params{$name} = [ $cgi->param($symbol) ];
+ } else {
+ no strict 'refs';
+ $params{$name} = $$name if $$name;
+ }
}
}
}
@@ -661,10 +678,28 @@ sub href (%) {
$href .= "/".esc_url($params{'project'}) if defined $params{'project'};
delete $params{'project'};
- # Summary just uses the project path URL
- if (defined $params{'action'} && $params{'action'} eq 'summary') {
+ # Summary just uses the project path URL, any other action come next
+ # in the URL
+ if (defined $params{'action'}) {
+ $href .= "/".esc_url($params{'action'}) unless $params{'action'} eq 'summary';
delete $params{'action'};
}
+
+ # next, we put either hash_base:file_name or hash
+ if (defined $params{'hash_base'}) {
+ $href .= "/".esc_url($params{'hash_base'});
+ if (defined $params{'file_name'}) {
+ $href .= ":".esc_url($params{'file_name'});
+ delete $params{'hash'} if $params{'hash'} eq git_get_hash_by_path($params{'hash_base'},$params{'file_name'});
+ delete $params{'file_name'};
+ } else {
+ delete $params{'hash'} if $params{'hash'} eq $params{'hash_base'};
+ }
+ delete $params{'hash_base'};
+ } elsif (defined $params{'hash'}) {
+ $href .= "/".esc_url($params{'hash'});
+ delete $params{'hash'};
+ }
}
# now encode the parameters explicitly
--
1.5.6.3
^ permalink raw reply related
* Re: Filtering mode changes
From: Santi Béjar @ 2008-08-01 12:32 UTC (permalink / raw)
To: Stefan Naewe; +Cc: git
In-Reply-To: <loom.20080801T111754-982@post.gmane.org>
On Fri, Aug 1, 2008 at 13:25, Stefan Naewe <stefan.naewe+git@gmail.com> wrote:
> Hi there.
>
> Here's my story:
>
> - I did some minor modifications to a repo that I want to 'give back'.
> - I worked on my own branch (of course).
> - I was stupid to edit the files (that live on a linux box) through a windows
> network share.
Then, you should set core.fileMode to false.
> - When I created diffs (using 'git format-patch') to send send 'upstream', I
> noticed that the edited files got their executable bit set (old mode 100644 ->
> new mode 100755)
You can just edit the patches and remove the "old/new mode" lines.
> - I created another commit to undo the mode changes.
You can use "git rebase -i" and edit (or squash) the revision before
generating the patch.
Santi
^ permalink raw reply
* Re: [PATCH] git-svn now work with crlf convertion enabled.
From: Dmitry Potapov @ 2008-08-01 12:36 UTC (permalink / raw)
To: Alexander Litvinov; +Cc: Junio C Hamano, git, Eric Wong
In-Reply-To: <200808011811.06984.litvinov2004@gmail.com>
On Fri, Aug 1, 2008 at 3:11 PM, Alexander Litvinov
<litvinov2004@gmail.com> wrote:
>> To being able to synchronize efficiently in both ways, you need to store
>> files exactly as they were received from SVN then there will be no
>> problem with applying binary delta patch. All CRLF conversion should be
>> done on checkout and checkin from/to Git repository.
>
> Sorry I have lost the mind flow here.
>
> 1. We 'fetch' files from svn as is. Yes, we know that svn use delta to rebuild
> original file.
> 2. We commit file to git. Right here we use git-hash-object. As I understand
> we _have_ to do convertion CRLF->LF here.
No, you should do any conversion here. There are two reasons for that:
1. If you do then you will not be able to apply binary patches later.
2. You do not really need it if the SVN repository has correct eol settings,
because all files that have svn:eol-style set to either 'native' or 'LF'
will have LF. Those that do not have svn:eol-style or have it to another
value should not be subject to CRLF conversion at all.
So, I believe all files received from SVN should be stored as is. Import is
not about creating new commits, it is about getting history from another
repository as it is.
> 3. In some days we will checkout file from git and wil do LF->CRLF convertion.
It is done only for files that do not have CRLF already.
>
> I thought this is a right workflow.
> - We could store original file too at step 2 somwhow to be able to use delta
> at step 1.
> - We can't skip convertion at step 2. Overwise git will store files with CRLF.
It is okay for Git to store CRLF, because you want to treat them as
binary files. If you want them being treated as text, you should change
svn:eol-style to 'native' for those files in SVN and then new versions
of these files will have the right ending. It is how SVN client works.
The only problem is how to synchronize the SVN view which files are binary
and which are text and what Git thinks about them.
Dmitry
^ permalink raw reply
* [PATCH 1/2] clone: Add an option to set up a mirror
From: Johannes Schindelin @ 2008-08-01 14:00 UTC (permalink / raw)
To: git, gitster
The command line
$ git clone --mirror $URL
is now a short-hand for
$ git clone --bare $URL
$ (cd $(basename $URL) && git remote add --mirror origin $URL)
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
Documentation/git-clone.txt | 5 ++++-
builtin-clone.c | 9 ++++++++-
t/t5601-clone.sh | 10 ++++++++++
3 files changed, 22 insertions(+), 2 deletions(-)
diff --git a/Documentation/git-clone.txt b/Documentation/git-clone.txt
index 26fd1b1..0e14e73 100644
--- a/Documentation/git-clone.txt
+++ b/Documentation/git-clone.txt
@@ -10,7 +10,7 @@ SYNOPSIS
--------
[verse]
'git clone' [--template=<template_directory>]
- [-l] [-s] [--no-hardlinks] [-q] [-n] [--bare]
+ [-l] [-s] [--no-hardlinks] [-q] [-n] [--bare] [--mirror]
[-o <name>] [-u <upload-pack>] [--reference <repository>]
[--depth <depth>] [--] <repository> [<directory>]
@@ -106,6 +106,9 @@ then the cloned repository will become corrupt.
used, neither remote-tracking branches nor the related
configuration variables are created.
+--mirror::
+ Set up a mirror of the remote repository. This implies --bare.
+
--origin <name>::
-o <name>::
Instead of using the remote name 'origin' to keep track
diff --git a/builtin-clone.c b/builtin-clone.c
index e086a40..a45179c 100644
--- a/builtin-clone.c
+++ b/builtin-clone.c
@@ -33,7 +33,7 @@ static const char * const builtin_clone_usage[] = {
NULL
};
-static int option_quiet, option_no_checkout, option_bare;
+static int option_quiet, option_no_checkout, option_bare, option_mirror;
static int option_local, option_no_hardlinks, option_shared;
static char *option_template, *option_reference, *option_depth;
static char *option_origin = NULL;
@@ -45,6 +45,8 @@ static struct option builtin_clone_options[] = {
"don't create a checkout"),
OPT_BOOLEAN(0, "bare", &option_bare, "create a bare repository"),
OPT_BOOLEAN(0, "naked", &option_bare, "create a bare repository"),
+ OPT_BOOLEAN(0, "mirror", &option_mirror,
+ "create a mirror repository (implies bare)"),
OPT_BOOLEAN('l', "local", &option_local,
"to clone from a local repository"),
OPT_BOOLEAN(0, "no-hardlinks", &option_no_hardlinks,
@@ -359,6 +361,9 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
if (option_no_hardlinks)
use_local_hardlinks = 0;
+ if (option_mirror)
+ option_bare = 1;
+
if (option_bare) {
if (option_origin)
die("--bare and --origin %s options are incompatible.",
@@ -446,7 +451,9 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
} else {
snprintf(branch_top, sizeof(branch_top),
"refs/remotes/%s/", option_origin);
+ }
+ if (option_mirror || !option_bare) {
/* Configure the remote */
snprintf(key, sizeof(key), "remote.%s.url", option_origin);
git_config_set(key, repo);
diff --git a/t/t5601-clone.sh b/t/t5601-clone.sh
index d785b3d..4b2533f 100755
--- a/t/t5601-clone.sh
+++ b/t/t5601-clone.sh
@@ -70,4 +70,14 @@ test_expect_success 'clone creates intermediate directories for bare repo' '
'
+test_expect_success 'clone --mirror' '
+
+ git clone --mirror src mirror &&
+ test -f mirror/HEAD &&
+ test ! -f mirror/file &&
+ FETCH="$(cd mirror && git config remote.origin.fetch)" &&
+ test "+refs/heads/*:refs/heads/*" = "$FETCH"
+
+'
+
test_done
--
1.6.0.rc1.46.g279e5
^ permalink raw reply related
* [PATCH 2/2] clone --bare: Add ".git" suffix to the directory name to clone into
From: Johannes Schindelin @ 2008-08-01 14:01 UTC (permalink / raw)
To: git, gitster
In-Reply-To: <alpine.DEB.1.00.0808011600170.9611@pacific.mpi-cbg.de.mpi-cbg.de>
We have a tradition that bare repositories live in directories ending
in ".git". To make this more a convention than just a tradition, teach
"git clone --bare" to add a ".git" suffix to the directory name.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
This patch is only conceptionally dependent on patch 1/2.
builtin-clone.c | 10 ++++++++--
t/t5601-clone.sh | 7 +++++++
2 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/builtin-clone.c b/builtin-clone.c
index a45179c..82f5b67 100644
--- a/builtin-clone.c
+++ b/builtin-clone.c
@@ -95,7 +95,7 @@ static char *get_repo_path(const char *repo, int *is_bundle)
return NULL;
}
-static char *guess_dir_name(const char *repo, int is_bundle)
+static char *guess_dir_name(const char *repo, int is_bundle, int is_bare)
{
const char *end = repo + strlen(repo), *start;
@@ -131,6 +131,12 @@ static char *guess_dir_name(const char *repo, int is_bundle)
end -= 4;
}
+ if (is_bare) {
+ char *result = xmalloc(end - start + 5);
+ sprintf(result, "%.*s.git", (int)(end - start), start);
+ return result;
+ }
+
return xstrndup(start, end - start);
}
@@ -388,7 +394,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
if (argc == 2)
dir = xstrdup(argv[1]);
else
- dir = guess_dir_name(repo_name, is_bundle);
+ dir = guess_dir_name(repo_name, is_bundle, option_bare);
if (!stat(dir, &buf))
die("destination directory '%s' already exists.", dir);
diff --git a/t/t5601-clone.sh b/t/t5601-clone.sh
index 4b2533f..e0a68ab 100755
--- a/t/t5601-clone.sh
+++ b/t/t5601-clone.sh
@@ -80,4 +80,11 @@ test_expect_success 'clone --mirror' '
'
+test_expect_success 'clone --bare names the local repository <name>.git' '
+
+ git clone --bare src &&
+ test -d src.git
+
+'
+
test_done
--
1.6.0.rc1.46.g279e5
^ permalink raw reply related
* Re: [PATCH 2/2] clone --bare: Add ".git" suffix to the directory name to clone into
From: Marcus Griep @ 2008-08-01 14:01 UTC (permalink / raw)
To: Git Mailing List
In-Reply-To: <alpine.DEB.1.00.0808011601200.9611@pacific.mpi-cbg.de.mpi-cbg.de>
[-- Attachment #1: Type: text/plain, Size: 2213 bytes --]
Does this patch forgo adding a ".git" suffix if one is already present?
Marcus
Johannes Schindelin wrote:
> We have a tradition that bare repositories live in directories ending
> in ".git". To make this more a convention than just a tradition, teach
> "git clone --bare" to add a ".git" suffix to the directory name.
>
> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
> ---
>
> This patch is only conceptionally dependent on patch 1/2.
>
> builtin-clone.c | 10 ++++++++--
> t/t5601-clone.sh | 7 +++++++
> 2 files changed, 15 insertions(+), 2 deletions(-)
>
> diff --git a/builtin-clone.c b/builtin-clone.c
> index a45179c..82f5b67 100644
> --- a/builtin-clone.c
> +++ b/builtin-clone.c
> @@ -95,7 +95,7 @@ static char *get_repo_path(const char *repo, int *is_bundle)
> return NULL;
> }
>
> -static char *guess_dir_name(const char *repo, int is_bundle)
> +static char *guess_dir_name(const char *repo, int is_bundle, int is_bare)
> {
> const char *end = repo + strlen(repo), *start;
>
> @@ -131,6 +131,12 @@ static char *guess_dir_name(const char *repo, int is_bundle)
> end -= 4;
> }
>
> + if (is_bare) {
> + char *result = xmalloc(end - start + 5);
> + sprintf(result, "%.*s.git", (int)(end - start), start);
> + return result;
> + }
> +
> return xstrndup(start, end - start);
> }
>
> @@ -388,7 +394,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
> if (argc == 2)
> dir = xstrdup(argv[1]);
> else
> - dir = guess_dir_name(repo_name, is_bundle);
> + dir = guess_dir_name(repo_name, is_bundle, option_bare);
>
> if (!stat(dir, &buf))
> die("destination directory '%s' already exists.", dir);
> diff --git a/t/t5601-clone.sh b/t/t5601-clone.sh
> index 4b2533f..e0a68ab 100755
> --- a/t/t5601-clone.sh
> +++ b/t/t5601-clone.sh
> @@ -80,4 +80,11 @@ test_expect_success 'clone --mirror' '
>
> '
>
> +test_expect_success 'clone --bare names the local repository <name>.git' '
> +
> + git clone --bare src &&
> + test -d src.git
> +
> +'
> +
> test_done
--
Marcus Griep
GPG Key ID: 0x5E968152
——
http://www.boohaunt.net
את.ψο´
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 793 bytes --]
^ permalink raw reply
* Re: [PATCH 1/2] clone: Add an option to set up a mirror
From: Miklos Vajna @ 2008-08-01 14:27 UTC (permalink / raw)
To: Johannes Schindelin; +Cc: git, gitster
In-Reply-To: <alpine.DEB.1.00.0808011600170.9611@pacific.mpi-cbg.de.mpi-cbg.de>
[-- Attachment #1: Type: text/plain, Size: 452 bytes --]
On Fri, Aug 01, 2008 at 04:00:45PM +0200, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:
>
> The command line
>
> $ git clone --mirror $URL
>
> is now a short-hand for
>
> $ git clone --bare $URL
> $ (cd $(basename $URL) && git remote add --mirror origin $URL)
Funny, someone asked exactly this on #git yesterday (IIRC), but we ended
up using clone & remote, since I didn't find clone --mirror in the man.
;-)
Thanks!
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply
* Re: git rev-parse --verify HEAD: fatal: Needed a single revision
From: Miklos Vajna @ 2008-08-01 14:35 UTC (permalink / raw)
To: Arkadiusz Miskiewicz; +Cc: git
In-Reply-To: <g6ul10$rr9$1@ger.gmane.org>
[-- Attachment #1: Type: text/plain, Size: 840 bytes --]
On Fri, Aug 01, 2008 at 11:29:04AM +0200, Arkadiusz Miskiewicz <arekm@pld-linux.org> wrote:
> How to reproduce:
> get http://carme.pld-linux.org/~arekm/rpm5.tar.bz2
> unpack
> cd rpm5
> git cvsimport -v -d :pserver:anonymous@rpm5.org:/cvs rpm
I did:
git cvsimport -v -d :pserver:anonymous@rpm5.org:/cvs -o master -C rpm rpm
first time it bailed out with an error, sadly I don't exactly remember,
but it was different to your error. Then I ran it again (of course
without rm -rf rpm) and it finished properly. The cvs checkout and git
HEAD differs only in one file (python/Makefile.in is removed in cvs, but
not in git).
I put it out to http://vmiklos.hu/gitweb/?p=rpm.git, if you are
interested.
> I'm using:
> $ git --version
> git version 1.5.6.4
$ git --version
git version 1.6.0.rc0.14.g95f8.dirty
Not sure if it matters or not.
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply
* Re: git help broken
From: Miklos Vajna @ 2008-08-01 14:41 UTC (permalink / raw)
To: Christian Couder; +Cc: Johannes Schindelin, Kevin Ballard, Git Mailing List
In-Reply-To: <200808010628.52875.chriscool@tuxfamily.org>
[-- Attachment #1: Type: text/plain, Size: 392 bytes --]
On Fri, Aug 01, 2008 at 06:28:52AM +0200, Christian Couder <chriscool@tuxfamily.org> wrote:
> I didn't realize that the function "is_git_command" would not work
> for "help".
Is there any reason why help is not a builtin? I think that would solve
the problem.
I'm willing to do such a patch, I just asked in case that would be
no-go for some - for me - unknown reason.
Thanks.
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply
* Re: [PATCH] diff: add ruby funcname pattern
From: Jeff King @ 2008-08-01 14:41 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Giuseppe Bilotta, git
In-Reply-To: <7v4p65tadh.fsf@gitster.siamese.dyndns.org>
On Fri, Aug 01, 2008 at 01:20:10AM -0700, Junio C Hamano wrote:
> Thanks again for the patch. Somewhere I heard that there are 10 Rubyista
> git users for every non Rubyista git user, so I am sure somebody would
> comment on your patch in a day or two. Perhaps we might even get Python
> and Perl hunk patterns (although I suspect Perl people are happy with the
> default one we stole from GNU diff) to go with it ;-).
I keep a lot of Perl in git, and yes, I am quite happy with the default
regex.
-Peff
^ permalink raw reply
* Re: [PATCH 2/2] clone --bare: Add ".git" suffix to the directory name to clone into
From: Bert Wesarg @ 2008-08-01 15:34 UTC (permalink / raw)
To: Marcus Griep; +Cc: Git Mailing List
In-Reply-To: <4893172C.1060203@griep.us>
On Fri, Aug 1, 2008 at 16:01, Marcus Griep <marcus@griep.us> wrote:
> Does this patch forgo adding a ".git" suffix if one is already present?
No, the purpose of the guess_dir_name() function is exactly to remove
any present ".git", and more.
Bert
>
> Marcus
>
^ permalink raw reply
* [PATCH] git mv: try harder to keep index entries intact
From: Johannes Schindelin @ 2008-08-01 16:49 UTC (permalink / raw)
To: git, gitster, pasky
Some filesystems change the ctime during a rename(), for technical
reasons. Since this is the only change, the contents need not be
rehashed. So just update the ctime after renaming the entry.
This change requires rename_index_entry_at() to return the new
position.
As git-mv assumes that it runs in a non-bare repository, and is
marked as such in the cmd_struct in git.c, the changes do not have
to be guarded against running in a bare repository.
To test this properly, you need to run t7001 with the environment
variable TEST_CTIME_WITH_SLEEP set non-empty, since there is no way
to manipulate the ctime directly; we have to sleep.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
builtin-mv.c | 15 +++++++++++++--
cache.h | 2 +-
read-cache.c | 4 ++--
t/t7001-mv.sh | 10 ++++++++--
4 files changed, 24 insertions(+), 7 deletions(-)
diff --git a/builtin-mv.c b/builtin-mv.c
index 4f65b5a..166a019 100644
--- a/builtin-mv.c
+++ b/builtin-mv.c
@@ -214,8 +214,19 @@ int cmd_mv(int argc, const char **argv, const char *prefix)
pos = cache_name_pos(src, strlen(src));
assert(pos >= 0);
- if (!show_only)
- rename_cache_entry_at(pos, dst);
+ if (!show_only) {
+ struct stat st;
+ pos = rename_cache_entry_at(pos, dst);
+
+ /*
+ * Renaming can update the ctime. Do not force
+ * a complete rehash just because of that.
+ */
+ if (!lstat(dst, &st))
+ active_cache[pos]->ce_ctime = st.st_ctime;
+ else if (!ignore_errors)
+ die ("Could not stat '%s'", dst);
+ }
}
if (active_cache_changed) {
diff --git a/cache.h b/cache.h
index 8155ab8..4b6876b 100644
--- a/cache.h
+++ b/cache.h
@@ -371,7 +371,7 @@ extern int index_name_pos(const struct index_state *, const char *name, int name
#define ADD_CACHE_JUST_APPEND 8 /* Append only; tree.c::read_tree() */
extern int add_index_entry(struct index_state *, struct cache_entry *ce, int option);
extern struct cache_entry *refresh_cache_entry(struct cache_entry *ce, int really);
-extern void rename_index_entry_at(struct index_state *, int pos, const char *new_name);
+extern int rename_index_entry_at(struct index_state *, int pos, const char *new_name);
extern int remove_index_entry_at(struct index_state *, int pos);
extern int remove_file_from_index(struct index_state *, const char *path);
#define ADD_CACHE_VERBOSE 1
diff --git a/read-cache.c b/read-cache.c
index c5aa5bc..4454686 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -43,7 +43,7 @@ static void replace_index_entry(struct index_state *istate, int nr, struct cache
istate->cache_changed = 1;
}
-void rename_index_entry_at(struct index_state *istate, int nr, const char *new_name)
+int rename_index_entry_at(struct index_state *istate, int nr, const char *new_name)
{
struct cache_entry *old = istate->cache[nr], *new;
int namelen = strlen(new_name);
@@ -56,7 +56,7 @@ void rename_index_entry_at(struct index_state *istate, int nr, const char *new_n
cache_tree_invalidate_path(istate->cache_tree, old->name);
remove_index_entry_at(istate, nr);
- add_index_entry(istate, new, ADD_CACHE_OK_TO_ADD|ADD_CACHE_OK_TO_REPLACE);
+ return add_index_entry(istate, new, ADD_CACHE_OK_TO_ADD|ADD_CACHE_OK_TO_REPLACE);
}
/*
diff --git a/t/t7001-mv.sh b/t/t7001-mv.sh
index 910a28c..5f6cee5 100755
--- a/t/t7001-mv.sh
+++ b/t/t7001-mv.sh
@@ -180,12 +180,15 @@ test_expect_success 'git mv should overwrite symlink to a file' '
echo 1 >moved &&
ln -s moved symlink &&
git add moved symlink &&
+ if test ! -z "$TEST_CTIME_WITH_SLEEP"
+ then
+ sleep 1
+ fi &&
test_must_fail git mv moved symlink &&
git mv -f moved symlink &&
! test -e moved &&
test -f symlink &&
test "$(cat symlink)" = 1 &&
- git update-index --refresh &&
git diff-files --quiet
'
@@ -199,11 +202,14 @@ test_expect_success 'git mv should overwrite file with a symlink' '
echo 1 >moved &&
ln -s moved symlink &&
git add moved symlink &&
+ if test ! -z "$TEST_CTIME_WITH_SLEEP"
+ then
+ sleep 1
+ fi &&
test_must_fail git mv symlink moved &&
git mv -f symlink moved &&
! test -e symlink &&
test -h moved &&
- git update-index --refresh &&
git diff-files --quiet
'
--
1.6.0.rc1.55.g69db8
^ permalink raw reply related
* Re: Is there any hope (format-patch)??
From: Daniel Barkalow @ 2008-08-01 17:35 UTC (permalink / raw)
To: Matti Kaasinen; +Cc: git
In-Reply-To: <4892FBF6.8060505@sitecno.fi>
On Fri, 1 Aug 2008, Matti Kaasinen wrote:
> Hi!
>
> Is there any hope with following procedure:
> I took reporitory from linux git:
> # git clone
> git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
>
> For getting patches to make recent version from v2.6.26-rc3 I executed:
> # git format-patch -o patchdir v2.6.26-rc3..origin
format-patch isn't going to work too well with non-linear history. When
two people make nearby or overlapping changes which get merged later, and
this gets turned into a linear sequence of changes, there's no
possible patch that will accurately reflect the change which got ordered
second.
> Then I checked out v2.6.26-rc3 to a new branch and patched it with
> at91patch/maxim.org.za that was produced against v2.6.26-rc3. That worked out
> without complaints.
It sounds like you really just want to do "merge origin" now, and skip the
whole patch series thing.
You'll probably get some conflicts (or applying the patch directly to
origin would have worked), but they should be relatively easy to resolve.
-Daniel
*This .sig left intentionally blank*
^ permalink raw reply
* Re: Git vs Monotone
From: Daniel Barkalow @ 2008-08-01 18:00 UTC (permalink / raw)
To: sverre; +Cc: Git Mailinglist
In-Reply-To: <bd6139dc0808010023r5d44e7a2ke062c9c39dfb865c@mail.gmail.com>
On Fri, 1 Aug 2008, Sverre Rabbelier wrote:
> On Thu, Jul 31, 2008 at 20:13, Sverre Rabbelier <alturin@gmail.com> wrote:
> > I just read this blog post [0] in which one of the Pidgin devs sheds
> > his light on their 'tool choice'. In the post he mentions the
> > following figures:
>
> > [0] http://theflamingbanker.blogspot.com/2008/07/holy-war-of-tool-choice.html
>
> I have poked him on #pidgin, and he has added the following:
>
> "Note: It's come to my attention that I had missed the ability to
> share a git database across multiple working copies. In that scenario,
> the total size of the database and 11 working copies is slightly under
> 750 MB, and thus a space savings in the neighborhood of 150 MB over
> monotone. It had been my understanding that I needed a copy of the
> database per working copy. I stand corrected. I don't use git on a
> daily basis, as the projects I work with currently use CVS, SVN, or
> monotone, so I am bound to miss finer details of git here and there.
> There are other reasons I prefer to stick with monotone, but I won't
> get into them here, as they're not important to the point of this
> post."
Did he retry the size calculation? I think someone on the list tried it
and found that the clone, including the checkout, was (for them) the size
that he thought was just the database; if you're used to having the clone
equivalent be effectively --bare by default, it's an easy mistake,
especially if you don't think it's possible for the entire project history
to be smaller than a checkout.
Not that it actually matters to the comparison of monotone and SVN that
was the actual point, but still, git is often more space-efficient than
SVN even just on the client, even without any sharing between branches,
just because uncompressed source is (relatively) huge. Which does, in a
way, contribute to the point that SVN have a vast quantity of per-branch
overhead.
-Daniel
*This .sig left intentionally blank*
^ permalink raw reply
* Re: [PATCH] builtin-name-rev: refactor stdin handling to its own function
From: Junio C Hamano @ 2008-08-01 19:07 UTC (permalink / raw)
To: Pieter de Bie; +Cc: Johannes Schindelin, Shawn O. Pearce, Git Mailinglist
In-Reply-To: <1217589372-4151-1-git-send-email-pdebie@ai.rug.nl>
Pieter de Bie <pdebie@ai.rug.nl> writes:
> Signed-off-by: Pieter de Bie <pdebie@ai.rug.nl>
> ---
>
> On 1 aug 2008, at 09:23, Junio C Hamano wrote:
> >Is it just me to find that this part is getting indented too deeply to be
> >readable?
>
> How about something like this then?
Much nicer, except that this refactoring should come first and then a new
feature. Dropping those extra five 's' so that it would compile would be
a nice bonus as well ;-)
> ...
> +
> + if (name_only) {
> + fwrite(p_start, p - p_start + 1 - 40,
> + 1, stdout);sssss
> + printf(name);
> + }
^ permalink raw reply
* Re: email address handling
From: Linus Torvalds @ 2008-08-01 19:34 UTC (permalink / raw)
To: Andrew Morton; +Cc: git
In-Reply-To: <20080731194042.a1534b4d.akpm@linux-foundation.org>
On Thu, 31 Jul 2008, Andrew Morton wrote:
>
> A minor thing.
>
> Commit 76ecb4f2d7ea5c3aac8970b9529775316507c6d2 is displayed thusly:
>
> commit 76ecb4f2d7ea5c3aac8970b9529775316507c6d2
> Author: Zhang, Rui <rui.zhang@intel.com>
> Date: Thu Apr 10 16:20:23 2008 +0800
>
> ACPI: update thermal temperature
>
> but that isn't a valid email address. Because it contains a comma it
> must be quoted: "Zhang, Rui".
The email address is rui.zhang@intel.com.
The name is Zhang, Rui.
Git at no point ever mixes the two up. It's _not_ one field ("Zhang, Rui
<rui.zhang@intel.com>"), it's literally two different parts that you set
separately, that just get shown (and encoded in the commit, for that
matter) in a way that resembles a single email address.
> I assume that something in the git toolchain removed his quotes, and
> that was arguably incorrect.
No, it would be incorrect to keep them, because the name doesn't contain
the quotes. The name is just that
Zhang, Rui
part.
I've considered having the email->name detection change "A, B" into "B A",
but it's not always right, so it doesn't try to munge the names it finds
in other ways except to remove obvious crud from the ends.
And Andrew, this is true of Signed-off-by: lines too, btw. If you actually
want to send emails to them, _then_ you need to add quotes to follow the
email rules.
Linus
^ permalink raw reply
* Re: [PATCH] git-svn now work with crlf convertion enabled.
From: Junio C Hamano @ 2008-08-01 19:42 UTC (permalink / raw)
To: Dmitry Potapov; +Cc: Alexander Litvinov, git, Eric Wong
In-Reply-To: <37fcd2780808010224l68c2c717y5334a34d9de1de8d@mail.gmail.com>
"Dmitry Potapov" <dpotapov@gmail.com> writes:
> On Fri, Aug 1, 2008 at 12:08 PM, Junio C Hamano <gitster@pobox.com> wrote:
>> "Dmitry Potapov" <dpotapov@gmail.com> writes:
>>>
>>> To being able to synchronize efficiently in both ways, you need to store
>>> files exactly as they were received from SVN then there will be no
>>> problem with applying binary delta patch. All CRLF conversion should be
>>> done on checkout and checkin from/to Git repository.
>>
>> Ahh,... if that is the philosophy, perhaps we can teach --stdin-paths to
>> optionally open the file itself and use index_pipe() like --stdin codepath
>> does?
>
> It is possible to do in this way, but it less efficient, because it uses
> index_pipe, which does not know the actual size, so it reallocates the buffer
> as it reads data from the descriptor, while index_fd uses xmap() instead.
> So I sent another solution yesterday:
> http://article.gmane.org/gmane.comp.version-control.git/90968
>
> It is a bit hackish because...
Ok, earlier I was confused who was proposing what for what purpose, but
that one was not just "a bit hackish" but an unacceptable hack ;-)
Perhaps you would want to do the s/write_object/flags/ conversion, like
this?
--
cache.h | 9 ++++++---
sha1_file.c | 15 +++++++++------
2 files changed, 15 insertions(+), 9 deletions(-)
diff --git a/cache.h b/cache.h
index 2475de9..39975fb 100644
--- a/cache.h
+++ b/cache.h
@@ -390,9 +390,12 @@ extern int ie_match_stat(const struct index_state *, struct cache_entry *, struc
extern int ie_modified(const struct index_state *, struct cache_entry *, struct stat *, unsigned int);
extern int ce_path_match(const struct cache_entry *ce, const char **pathspec);
-extern int index_fd(unsigned char *sha1, int fd, struct stat *st, int write_object, enum object_type type, const char *path);
-extern int index_pipe(unsigned char *sha1, int fd, const char *type, int write_object);
-extern int index_path(unsigned char *sha1, const char *path, struct stat *st, int write_object);
+
+#define HASH_OBJECT_DO_CREATE 01
+#define HASH_OBJECT_LITERALLY 02
+extern int index_fd(unsigned char *sha1, int fd, struct stat *st, int flags, enum object_type type, const char *path);
+extern int index_pipe(unsigned char *sha1, int fd, const char *type, int flags);
+extern int index_path(unsigned char *sha1, const char *path, struct stat *st, int flags);
extern void fill_stat_cache_info(struct cache_entry *ce, struct stat *st);
#define REFRESH_REALLY 0x0001 /* ignore_valid */
diff --git a/sha1_file.c b/sha1_file.c
index e281c14..5def648 100644
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -2353,10 +2353,11 @@ int has_sha1_file(const unsigned char *sha1)
return has_loose_object(sha1);
}
-int index_pipe(unsigned char *sha1, int fd, const char *type, int write_object)
+int index_pipe(unsigned char *sha1, int fd, const char *type, int flags)
{
struct strbuf buf;
int ret;
+ int write_object = flags & HASH_OBJECT_DO_CREATE;
strbuf_init(&buf, 0);
if (strbuf_read(&buf, fd, 4096) < 0) {
@@ -2375,9 +2376,11 @@ int index_pipe(unsigned char *sha1, int fd, const char *type, int write_object)
return ret;
}
-int index_fd(unsigned char *sha1, int fd, struct stat *st, int write_object,
+int index_fd(unsigned char *sha1, int fd, struct stat *st, int flags,
enum object_type type, const char *path)
{
+ int write_object = flags & HASH_OBJECT_DO_CREATE;
+ int hash_literally = flags & HASH_OBJECT_LITERALLY;
size_t size = xsize_t(st->st_size);
void *buf = NULL;
int ret, re_allocated = 0;
@@ -2392,7 +2395,7 @@ int index_fd(unsigned char *sha1, int fd, struct stat *st, int write_object,
/*
* Convert blobs to git internal format
*/
- if ((type == OBJ_BLOB) && S_ISREG(st->st_mode)) {
+ if (!hash_literally && (type == OBJ_BLOB) && S_ISREG(st->st_mode)) {
struct strbuf nbuf;
strbuf_init(&nbuf, 0);
if (convert_to_git(path, buf, size, &nbuf,
@@ -2416,7 +2419,7 @@ int index_fd(unsigned char *sha1, int fd, struct stat *st, int write_object,
return ret;
}
-int index_path(unsigned char *sha1, const char *path, struct stat *st, int write_object)
+int index_path(unsigned char *sha1, const char *path, struct stat *st, int flags)
{
int fd;
char *target;
@@ -2428,7 +2431,7 @@ int index_path(unsigned char *sha1, const char *path, struct stat *st, int write
if (fd < 0)
return error("open(\"%s\"): %s", path,
strerror(errno));
- if (index_fd(sha1, fd, st, write_object, OBJ_BLOB, path) < 0)
+ if (index_fd(sha1, fd, st, flags, OBJ_BLOB, path) < 0)
return error("%s: failed to insert into database",
path);
break;
@@ -2441,7 +2444,7 @@ int index_path(unsigned char *sha1, const char *path, struct stat *st, int write
return error("readlink(\"%s\"): %s", path,
errstr);
}
- if (!write_object)
+ if (!(flags & HASH_OBJECT_DO_CREATE))
hash_sha1_file(target, len, blob_type, sha1);
else if (write_sha1_file(target, len, blob_type, sha1))
return error("%s: failed to insert into database",
^ permalink raw reply related
* Re: email address handling
From: Andrew Morton @ 2008-08-01 19:45 UTC (permalink / raw)
To: Linus Torvalds; +Cc: git
In-Reply-To: <alpine.LFD.1.10.0808011229400.3277@nehalem.linux-foundation.org>
On Fri, 1 Aug 2008 12:34:58 -0700 (PDT)
Linus Torvalds <torvalds@linux-foundation.org> wrote:
> And Andrew, this is true of Signed-off-by: lines too, btw. If you actually
> want to send emails to them, _then_ you need to add quotes to follow the
> email rules.
That's how I noticed it - copied, pasted, MTA barfed.
Converting a usable name+email-address into an unusable one seems ... unuseful.
^ permalink raw reply
* [PATCH] git-p4: chdir now properly sets PWD environment variable in msysGit
From: Robert Blum @ 2008-08-01 19:50 UTC (permalink / raw)
To: simon, shausman, marius, hanwen, gitster; +Cc: git
P4 on Windows expects the PWD environment variable to be set to the
current working dir, but os.chdir in python doesn't do that by default
Signed-off-by: Robert Blum <rob.blum@gmail.com>
---
Pushing it out to the list since I'm not entirely sure who the git-p4 owner
even is. CC'ed likely suspects for ownership ;)
contrib/fast-import/git-p4 | 15 +++++++++++----
1 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/contrib/fast-import/git-p4 b/contrib/fast-import/git-p4
index 6ae0429..b4d0c65 100755
--- a/contrib/fast-import/git-p4
+++ b/contrib/fast-import/git-p4
@@ -16,6 +16,13 @@ from sets import Set;
verbose = False
+if os.name == 'nt':
+ def os_chdir(dir):
+ os.environ['PWD']=dir
+ os.chdir(dir)
+else:
+ os_chdir = os.chdir
+
def die(msg):
if verbose:
raise Exception(msg)
@@ -712,7 +719,7 @@ class P4Submit(Command):
print "Perforce checkout for depot path %s located at %s" % (self.depot
Path, self.clientPath)
self.oldWorkingDirectory = os.getcwd()
- os.chdir(self.clientPath)
+ os_chdir(self.clientPath)
print "Syncronizing p4 checkout..."
system("p4 sync ...")
@@ -732,7 +739,7 @@ class P4Submit(Command):
if len(commits) == 0:
print "All changes applied!"
- os.chdir(self.oldWorkingDirectory)
+ os_chdir(self.oldWorkingDirectory)
sync = P4Sync()
sync.run([])
@@ -1670,7 +1677,7 @@ class P4Clone(P4Sync):
print "Importing from %s into %s" % (', '.join(depotPaths), self.cloneD
estination)
if not os.path.exists(self.cloneDestination):
os.makedirs(self.cloneDestination)
- os.chdir(self.cloneDestination)
+ os_chdir(self.cloneDestination)
system("git init")
self.gitdir = os.getcwd() + "/.git"
if not P4Sync.run(self, depotPaths):
@@ -1782,7 +1789,7 @@ def main():
if os.path.exists(cmd.gitdir):
cdup = read_pipe("git rev-parse --show-cdup").strip()
if len(cdup) > 0:
- os.chdir(cdup);
+ os_chdir(cdup);
if not isValidGitDir(cmd.gitdir):
if isValidGitDir(cmd.gitdir + "/.git"):
--
1.5.5.1015.g9d258
^ permalink raw reply related
* Re: email address handling
From: Linus Torvalds @ 2008-08-01 19:56 UTC (permalink / raw)
To: Andrew Morton; +Cc: git
In-Reply-To: <20080801124550.26b9efc0.akpm@linux-foundation.org>
On Fri, 1 Aug 2008, Andrew Morton wrote:
>
> That's how I noticed it - copied, pasted, MTA barfed.
>
> Converting a usable name+email-address into an unusable one seems ... unuseful.
Umm. Those signed-off ones weren't even _converted_ They were written by
people.
Also, you seemed to miss the point that it's not a name+email-address.
It's a name. Oh, and there's an email address too. But they aren't
connected. We often just print out the name *without* the email address.
Why should those things have to know about some totally irrelevant email
quoting rules? They weren't emails, didn't know about it, and didn't care.
Linus
^ 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