Re: [PATCH v3 22/28] git-remote-mediawiki: Modify strings for a better coding-style

2013-06-10 Thread Junio C Hamano
Matthieu Moy matthieu@grenoble-inp.fr writes:

 Please, don't top-post. Quote the part of the message you're replying
 to, and reply below.

 Benoît Person benoit.per...@ensimag.fr writes:

 Well, I think next step would be to replace all those calls with
 Git.pm `command`, `command_oneline` and `config``which take an array
 of arguments after the command. In the preview tool we use those but
 I don't know if we will find the time to clean that up too in
 git-remote-mediawiki :) .

 Agreed. run_git was written to avoid having to depend on Git.pm, but now
 that we do, we should do it the Git.pm way (although this is not a
 high priority for now).

 Don't know though if it's better to mix that with this serie which is
 mainly based on what perlcritic returns.

 If you go this way, I'd rather have it on top (i.e. a separate patch
 series).

Or not worry too much about it in the 3-week long school project.
Finish one that you started and then build on top.
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] Documentation/CommunityGuidelines

2013-06-10 Thread Jonathan Nieder
Junio C Hamano wrote:

 0. You do not take offense, no matter what.  If someone attacks
 you irrationally, you do not respond.  This is a public mailing
 list, and we are all rational people: the attacker has already
 humiliated herself in public, and everyone can see that.
[...]
 I suspect it mostly has to do with the desire to make sure that
 bystanders do not get an impression that the one who speaks last
 gives the conclusion to the discussion, so stating The attacker
 being the one who speaks last in the discussion does not mean the
 conclusion is his. explicitly might be one way to make it more
 practically useful by alleviating the urge to respond, instead of
 saying no matter what.

 I dunno.

Actually my motivation is worse than that in at least one of the cases
I am assuming Ram is referring to.

I don't think most bystanders would misunderstand if I let a certain
person alone instead of responding and saying You are being
unproductive.  Please stop.  But that certain person seems to
misunderstand, whether I say that or not.  So when I lose patience I
say so, knowing that it will spark a discussion with others, knowing
that that discussion needs to happen and that if the problem is not
addressed I will continue to lose motivation for regular work on-list.

Is that an instance of taking offense and letting emotion overtake
reason?  Is that against the rules?

Jonathan
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 2/3] test: improve rebase -q test

2013-06-10 Thread Johannes Sixt
Am 10.06.2013 19:27, schrieb SZEDER Gábor:
 My main motivation is that, like in your example, in the bash prompt
 tests I only have to check a single line of output, but because of
 debuggability I always did:
 
   echo (master) expected
   __git_ps1 actual
   test_cmp expected actual

Chained by , I presume.

 With such a helper function this could be reduced to a single line:
 
   test_string_equal (master) $(__git_ps1)
 
 without loss of functionality

Not quite: A non-zero exit code of the $(__git_ps1) is lost. (It
probably doesn't matter here, but it certainly does if the command is
$(git rev-parse foo) or similar.)

-- Hannes

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 2/4] push: make upstream, simple work with pushdefault

2013-06-10 Thread Junio C Hamano
Ramkumar Ramachandra artag...@gmail.com writes:

 I am not saying that you have to pick one to use for push.default
 among the remaining ones (i.e. matching, current, what else?).  It
 is very plausible that the triangular workflow wants a different
 logic to pick what branches are to be updated and how.  Perhaps we
 would want something that is capable of mapping your local branch
 name to a branch name suitable in your publishing repository, and I
 am not opposed to have such a mode.

 Okay, we'll have to do some sort of split and mark push.default =
 upstream/ simple suitable-only-for-centralized-workflows, or something
 to that effect (deprecation?) :|

Among the current ones, I think upstream is the only one that has
the branch I fetch and integrate with is the one I want to update
with my result connotation.  The current and matching modes
determine what gets pushed solely between the local repository you
are pushing from and the remote repository you are pushing to,
without getting what do I fetch and integrate with in the
equation.

As an extension to upstream, the current implementation of
simple of course has the same issue, but because the name simple
does not inherently have such branch I fetch and integrate with is
the one I want to update with my result connotation, we can clean
up its semantics to match the new reality after triangular workflow.

If you recall the earlier discussion on @{publish} which is
different from @{upstream}, one idea to allow mapping on the push
end was to introduce push.default = single that would act as
upstream when in branch I fetch and integrate with is the same
branch at the same repository the one I want to update with my
result workflow, and in a triangular workflow maps the branch being
pushed using remote.$name.push refspecs (if exists).

I think extending it further to act as 'current' if no push refspecs
are set for the remote you push to in a triangular workflow might be
a way to go if we want the mapping flexibility without having to set
branch.$name.push to each and every branch.
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 2/3] test: improve rebase -q test

2013-06-10 Thread Junio C Hamano
SZEDER Gábor sze...@ira.uka.de writes:

 With such a helper function this could be reduced to a single line:

   test_string_equal (master) $(__git_ps1)

 without loss of functionality or debuggability, because in case of a
 failure it would output something like this (bikesheddable, of
 course):

   Error:
 expected: (master)
 got: ((deadbeef...))

Yeah, that looks sensible.
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Different diff strategies in add --interactive

2013-06-10 Thread Junio C Hamano
John Keeping j...@keeping.me.uk writes:

 I think the first thing to do is read the diff.algorithm setting in
 git-add--interactive and pass its value to the underlying diff-index and
 diff-files commands, but should we also have a command line parameter to
 git-add to specify the diff algorithm in interactive mode?  And if so,
 can we simply add --diff-algorithm to git-add, or is that too
 confusing?

Making git add--interactive read from diff.algorithm is probably a
good idea, because the command itself definitely is a Porcelain.  We
would probably need a way to defeat the configured default for
completeness, either:

git add -p --diff-algorithm=default
git -c diff.algorithm=default add -p

but I suspect that a new option to git add that only takes effect
together with -p is probably an overkill, only in order to support
the former and not having to say the latter, but I can be persuaded
either way.

As long as git add --diff-algorithm=foo without -i or -p
option lets the user know it has no effect (error out, give warning
and continue, etc. whose details I do not deeply care), that is.
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/6] templates: Fewer subprocesses in pre-commit hook

2013-06-10 Thread Junio C Hamano
Richard Hartmann richih.mailingl...@gmail.com writes:

 Spawning a new subprocess for every line printed is inefficient.
 Thus spawn only one instance of `echo`.

 Signed-off-by: Richard Hartmann richih.mailingl...@gmail.com
 ---
  templates/hooks--pre-commit.sample |   24 
  1 file changed, 12 insertions(+), 12 deletions(-)

 diff --git a/templates/hooks--pre-commit.sample 
 b/templates/hooks--pre-commit.sample
 index 18c4829..126ae13 100755
 --- a/templates/hooks--pre-commit.sample
 +++ b/templates/hooks--pre-commit.sample
 @@ -31,18 +31,18 @@ if [ $allownonascii != true ] 
   test $(git diff --cached --name-only --diff-filter=A -z $against |
 LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0
  then
 - echo Error: Attempt to add a non-ascii file name.
 - echo
 - echo This can cause problems if you want to work
 - echo with people on other platforms.
 - echo
 - echo To be portable it is advisable to rename the file ...
 - echo
 - echo If you know what you are doing you can disable this
 - echo check using:
 - echo
 - echo   git config hooks.allownonascii true
 - echo
 + echo 'Error: Attempt to add a non-ascii file name.
 +
 +This can cause problems if you want to work
 +with people on other platforms.
 +
 +To be portable it is advisable to rename the file.
 +
 +If you know what you are doing you can disable this
 +check using:
 +
 +  git config hooks.allownonascii true
 +'
   exit 1
  fi

Thanks.
Writing it as a single here-text

cat -EOF
Error: Attempt to...

the message body that is
multi-line
EOF

might make it easier for people who want to activate and customize
the message, but honestly this is a borderline Meh at least to me.

Will take a look at other patches first before further commenting on
this.


--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] Documentation/CommunityGuidelines

2013-06-10 Thread Ramkumar Ramachandra
Jonathan Nieder wrote:
 I don't think most bystanders would misunderstand if I let a certain
 person alone instead of responding and saying You are being
 unproductive.  Please stop.  But that certain person seems to
 misunderstand, whether I say that or not.  So when I lose patience I
 say so, knowing that it will spark a discussion with others, knowing
 that that discussion needs to happen and that if the problem is not
 addressed I will continue to lose motivation for regular work on-list.

 Is that an instance of taking offense and letting emotion overtake
 reason?  Is that against the rules?

The problem needs to be addressed, Jonathan.  Which is precisely why I
wrote this patch: to calmly and rationally discuss the issue, and
dampen the chances of repetition.  You do not do it by losing your
patience, becoming emotional, and fueling a large ongoing fire.
Prolonging fires do not help prevent them from recurring, as evidenced
by previous fires; this is because there is no takeaway from a fire.
All that's left are a few shreds and ashes.  From this very fire, we
gained NOTHING, and lost Duy.

It is absolutely imperative to keep all our contributors productive,
and maximize output.  If there is something troubling you, this is the
right thread to speak on.
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 2/6] templates: Reformat pre-commit hook's message

2013-06-10 Thread Junio C Hamano
Richard Hartmann richih.mailingl...@gmail.com writes:

 Now that the there's only one echo being spawned, the message can span
 the full 80 chars.

 Signed-off-by: Richard Hartmann richih.mailingl...@gmail.com
 ---
  templates/hooks--pre-commit.sample |6 ++
  1 file changed, 2 insertions(+), 4 deletions(-)

 diff --git a/templates/hooks--pre-commit.sample 
 b/templates/hooks--pre-commit.sample
 index 126ae13..7676c6e 100755
 --- a/templates/hooks--pre-commit.sample
 +++ b/templates/hooks--pre-commit.sample
 @@ -33,13 +33,11 @@ if [ $allownonascii != true ] 
  then
   echo 'Error: Attempt to add a non-ascii file name.
  
 -This can cause problems if you want to work
 -with people on other platforms.
 +This can cause problems if you want to work with people on other platforms.
  
  To be portable it is advisable to rename the file.
  
 -If you know what you are doing you can disable this
 -check using:
 +If you know what you are doing you can disable this check using:
  
git config hooks.allownonascii true
  '

OK.  Occupying 75-col feels like it is pushing a bit, but the result
does look more readable.
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 5/6] templates: Fix ASCII art in pre-rebase hook

2013-06-10 Thread Junio C Hamano
Richard Hartmann richih.mailingl...@gmail.com writes:

 The example assumes 8-char wide tabs and breaks for people with
 4-char wide tabs.

Even though as far as this project is concerned, a tab stop is every
8 columns, this is for consumption by end-users who use Git, not for
people who want to improve the code in Git (which this file is part
of), so this untabify may make sense.

Thanks.

 Signed-off-by: Richard Hartmann richih.mailingl...@gmail.com
 ---
  templates/hooks--pre-rebase.sample |   16 
  1 file changed, 8 insertions(+), 8 deletions(-)

 diff --git a/templates/hooks--pre-rebase.sample 
 b/templates/hooks--pre-rebase.sample
 index 053f111..b74cd1d 100755
 --- a/templates/hooks--pre-rebase.sample
 +++ b/templates/hooks--pre-rebase.sample
 @@ -132,14 +132,14 @@ With this workflow, you would want to know:
  
  Let's look at this example:
  
 -o---o---o---o---o---o---o---o---o---o next
 -   /   /   /   /
 -  /   a---a---b A /   /
 - /   /   /   /
 -/   /   c---c---c---c B /
 -   /   /   / \ /
 -  /   /   /   b---b C \   /
 - /   /   /   / \ /
 +   o---o---o---o---o---o---o---o---o---o next
 +  /   /   /   /
 + /   a---a---b A /   /
 +/   /   /   /
 +   /   /   c---c---c---c B /
 +  /   /   / \ /
 + /   /   /   b---b C \   /
 +/   /   /   / \ /
  ---o---o---o---o---o---o---o---o---o---o---o master
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 6/6] template: Fix comment indentation in pre-rebase hook

2013-06-10 Thread Junio C Hamano
Richard Hartmann richih.mailingl...@gmail.com writes:

 The other hooks use two whitespace for indentation instead of tabs
 to signify code in the example/echo output.
 Follow the same layout in templates/hooks--pre-rebase.sample

 Signed-off-by: Richard Hartmann richih.mailingl...@gmail.com
 ---
  templates/hooks--pre-rebase.sample |   10 +-
  1 file changed, 5 insertions(+), 5 deletions(-)

 diff --git a/templates/hooks--pre-rebase.sample 
 b/templates/hooks--pre-rebase.sample
 index b74cd1d..43426e0 100755
 --- a/templates/hooks--pre-rebase.sample
 +++ b/templates/hooks--pre-rebase.sample
 @@ -157,13 +157,13 @@ B to be deleted.
  
  To compute (1):
  
 - git rev-list ^master ^topic next
 - git rev-list ^masternext
 +  git rev-list ^master ^topic next
 +  git rev-list ^masternext
  
 - if these match, topic has not merged in next at all.
 +  if these match, topic has not merged in next at all.
  
  To compute (2):
  
 - git rev-list master..topic
 +  git rev-list master..topic
  
 - if this is empty, it is fully merged to master.
 +  if this is empty, it is fully merged to master.

I think offsetting the actual commands to the right is correct, but
if these match and if this is empty should be flushed to left as
this patch shows.

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [IGNORE] Implement 'git rebase' in ruby

2013-06-10 Thread Ramkumar Ramachandra
Felipe Contreras wrote:
 I think that's the only way forward, since the Git project doesn't
 wish to be improved.

 Perhaps it's time for me to create a pseudonym, and when you have to
 do that to land clearly good patches, you know something is *REALLY*
 wrong with the project.

I ask only for your patience, Felipe.

Let's give it a few days to calm down, and discuss things rationally
with people.  The project does have some mental blocks, but it is not
an insurmountable problem.
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 2/3] test: improve rebase -q test

2013-06-10 Thread SZEDER Gábor
On Mon, Jun 10, 2013 at 09:07:06PM +0200, Johannes Sixt wrote:
 Am 10.06.2013 19:27, schrieb SZEDER Gábor:
  My main motivation is that, like in your example, in the bash prompt
  tests I only have to check a single line of output, but because of
  debuggability I always did:
  
echo (master) expected
__git_ps1 actual
test_cmp expected actual
 
 Chained by , I presume.

Sure.

  With such a helper function this could be reduced to a single line:
  
test_string_equal (master) $(__git_ps1)
  
  without loss of functionality
 
 Not quite: A non-zero exit code of the $(__git_ps1) is lost. (It
 probably doesn't matter here, but it certainly does if the command is
 $(git rev-parse foo) or similar.)

Ouch, indeed.  Yeah, the exit code doesn't matter for the prompt tests
(I mean for __git_ps1() tests, but maybe it does matter for some
__gitdir() tests), but I suppose it does matter everywhere else where
the same construct is used.  We could still do

  actual=$(git foo) 
  test_string_equal good $actual

to preserve and check the exit code, and this is still one line
shorter, but overall not that appealing anymore.

However.  The git command's exit code is lost the same way in 'test
good = $(git foo)' constructs, too, and plenty of such constructs are
all over the test suite.  Shouldn't we avoid using such constucts
then?


Gábor

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/6] templates: Fewer subprocesses in pre-commit hook

2013-06-10 Thread Richard Hartmann
Hi Junio,

if you want a new patch, just say the word.


Richard
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 2/3] test: improve rebase -q test

2013-06-10 Thread Jeff King
On Sun, Jun 09, 2013 at 11:30:01AM -0700, Junio C Hamano wrote:

 -- 8 --
 Subject: [PATCH] test: test_output_must_be_empty helper
 
 There are quite a lot places where an output file is expected to be
 empty, and we fail the test when it is not.  The output from running
 the test script with -i -v can be helped if we showed the unexpected
 contents at that point.
 
 We could of course do
 
 expected.empty  test_cmp expected.empty actual
 
 but this is commmon enough to be done with a dedicated helper.

Thanks, I think this improves the readability of the test suite (and its
output when there are failures).

You can also do:

  test_cmp /dev/null actual

for the same effect, but I guess the diff is not all that interesting
(by definition, it would consist only of added lines, and you are
already showing them, so it would not be an improvement).

-Peff
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] Documentation/CommunityGuidelines

2013-06-10 Thread A Large Angry SCM

On 06/10/2013 03:45 PM, Ramkumar Ramachandra wrote:
[...]


It is absolutely imperative to keep all our contributors productive,
and maximize output.


Why?

A useful product with a maintainable code base are what seems to be 
more important to a successful open source effort.



A Large Angry SCM
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] Documentation/CommunityGuidelines

2013-06-10 Thread Ramkumar Ramachandra
A Large Angry SCM wrote:
 It is absolutely imperative to keep all our contributors productive,
 and maximize output.


 Why?

 A useful product with a maintainable code base are what seems to be more
 important to a successful open source effort.

Doesn't a successful open source effort (with a good review process,
which we already have) imply a maintainable product with lots of
users?  What am I missing, and what change do you propose?
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] diff: add --ignore-blank-lines option

2013-06-10 Thread Antoine Pelisse
On Sun, Jun 9, 2013 at 10:07 PM, Junio C Hamano gits...@pobox.com wrote:
 When any ignore blank option is used, there will be lines that
 actually has changes (hence should be shown with +/-) but we
 deliberately ignore their changes (hence, if they ever appear in the
 hunk, they do so as context lines prefixed with SP not +/-).  When
 we do so, we show the lines from the postimage in the context.

Don't we actually use preimage (see below) ? I think using pre-image
allows the patch to be applicable to another tree (but ignoring the
space changes).
If we actually hide new blank lines that are in the context, it means
that we won't be able to apply a patch with 2 new blank lines in the 3
line context.

Anyway, I'm starting to think that show blank lines changes near
other changes makes sense more and more sense.
By the way I have a patch I *think* is working, but I will check it
another thousand times before sending.

Cheers,
Antoine

$ git diff
diff --git a/x b/x
index e562137..226e35a 100644
--- a/x
+++ b/x
@@ -4,8 +4,9 @@ change
 3
 4
 5
-6
-7
-8
-9
+   6
+7
+change
+  8
+9
 10

$ git diff -w
diff --git a/x b/x
index e562137..226e35a 100644
--- a/x
+++ b/x
@@ -6,6 +6,7 @@ change
 5
 6
 7
+change
 8
 9
 10
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[ANNOUNCE] Git v1.8.3.1

2013-06-10 Thread Junio C Hamano
The latest maintenance release Git v1.8.3.1 is now available at the
usual places.

This is primarily to push out fixes to two regressions that seem to
affect many people, namely, the .gitignore !directory bug and the
daemon cannot read from $HOME owned by root bug.

The release tarballs are found at:

http://code.google.com/p/git-core/downloads/list

and their SHA-1 checksums are:

32562a231fe4422bc033bf872fffa61f41ee2669  git-1.8.3.1.tar.gz
94d48f6f8684aec851124e7d0b835b338a9187ad  git-htmldocs-1.8.3.1.tar.gz
0cd759579d4bd75f1cf1ba073b1ab96c49390426  git-manpages-1.8.3.1.tar.gz

The following public repositories all have a copy of the v1.8.3.1
tag and the maint branch that the tag points at:

  url = https://kernel.googlesource.com/pub/scm/git/git
  url = git://repo.or.cz/alt-git.git
  url = https://code.google.com/p/git-core/
  url = git://git.sourceforge.jp/gitroot/git-core/git.git
  url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
  url = https://github.com/gitster/git

Also, http://www.kernel.org/pub/software/scm/git/ has copies of the
release tarballs.

Git v1.8.3.1 Release Notes


Fixes since v1.8.3
--

 * When $HOME is misconfigured to point at an unreadable directory, we
   used to complain and die. The check has been loosened.

 * Handling of negative exclude pattern for directories !dir was
   broken in the update to v1.8.3.

Also contains a handful of trivial code clean-ups, documentation
updates, updates to the test suite, etc.
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] Documentation/CommunityGuidelines

2013-06-10 Thread A Large Angry SCM

On 06/10/2013 04:56 PM, Ramkumar Ramachandra wrote:

A Large Angry SCM wrote:

It is absolutely imperative to keep all our contributors productive,
and maximize output.



Why?

A useful product with a maintainable code base are what seems to be more
important to a successful open source effort.


Doesn't a successful open source effort (with a good review process,
which we already have) imply a maintainable product with lots of
users?  What am I missing, and what change do you propose?



It's not about keeping all of the contributers productive or maximizing 
output. It's about the result being useful.

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Different diff strategies in add --interactive

2013-06-10 Thread Jeff King
On Mon, Jun 10, 2013 at 12:28:55PM -0700, Junio C Hamano wrote:

 John Keeping j...@keeping.me.uk writes:
 
  I think the first thing to do is read the diff.algorithm setting in
  git-add--interactive and pass its value to the underlying diff-index and
  diff-files commands, but should we also have a command line parameter to
  git-add to specify the diff algorithm in interactive mode?  And if so,
  can we simply add --diff-algorithm to git-add, or is that too
  confusing?
 
 Making git add--interactive read from diff.algorithm is probably a
 good idea, because the command itself definitely is a Porcelain.  We
 would probably need a way to defeat the configured default for
 completeness, either:
 
 git add -p --diff-algorithm=default
 git -c diff.algorithm=default add -p
 
 but I suspect that a new option to git add that only takes effect
 together with -p is probably an overkill, only in order to support
 the former and not having to say the latter, but I can be persuaded
 either way.

Worse than that, you would need to add such an option to checkout -p,
reset -p, stash -p, etc. I think the latter form you suggest is
probably acceptable in this case.

Overall, I think respecting diff.algorithm in add--interactive is a very
sane thing to do. I would even be tempted to say we should allow a few
other select diff options (e.g., fewer or more context lines). If you
allowed diff options like this:

  git add --patch=--patience -U5

that is very flexible, but I would not want to think about what the code
does when you pass --patch=--raw or equal nonsense.

But I cannot off the top of my head think of other options besides -U
that would be helpful. I have never particularly wanted it for add -p,
either, though I sometimes generate patches to the list with a greater
number of context lines when I think it makes the changes to a short
function more readable.

-Peff
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/6] templates: Fewer subprocesses in pre-commit hook

2013-06-10 Thread Jeff King
On Mon, Jun 10, 2013 at 08:36:00PM +0200, Richard Hartmann wrote:

 Spawning a new subprocess for every line printed is inefficient.
 Thus spawn only one instance of `echo`.

Most modern shells have echo as a built-in these days, and do not fork
at all to run it. E.g., try strace sh -c 'echo foo' with your shell of
choice; neither dash nor bash will fork at all.

IMHO the indentation issues make the end result of your patch less
readable (and here-doc with cat is more readable, but actually
_increases_ the number of processes, since cat is not usually a
built-in). So I'd be in favor of keeping it as-is.

-Peff
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 5/6] templates: Fix ASCII art in pre-rebase hook

2013-06-10 Thread Jeff King
On Mon, Jun 10, 2013 at 08:36:04PM +0200, Richard Hartmann wrote:

 The example assumes 8-char wide tabs and breaks for people with
 4-char wide tabs.

If you end up re-rolling, it might be worth saying Let's just convert
all of the tabs to spaces in the commit message. I was curious what
your solution was (all spaces, or consistent start-tab indentation
followed by spaces), and it was somewhat hard to see in the patch since
the changes were pure whitespace. :)

-Peff
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Bad attitudes and problems in the Git community (was: Re: [PATCH 2/2] Move sequencer to builtin)

2013-06-10 Thread Felipe Contreras
On Mon, Jun 10, 2013 at 1:11 PM, Martin von Zweigbergk
martinv...@gmail.com wrote:
 On Mon, Jun 10, 2013 at 9:58 AM, Felipe Contreras
 felipe.contre...@gmail.com wrote:
 On Mon, Jun 10, 2013 at 4:05 AM, Stefano Lattarini
 stefano.lattar...@gmail.com wrote:

 You need two sides to have an argument.

 I disagree.  Unless you mean than, whenever a part behaves in a
 hostile and aggressive way, the other part should just silently
 knuckle under.

 You are wrong. If a bum in the street starts talking about you about
 why you are going to hell, and you reply to him and argue. Who has the
 fault of starting an argument?

 I'm not sure I follow the analogy. Are you the bum or the passer-by?

It doesn't matter. Both sides are at fault of an argument.

-- 
Felipe Contreras
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 2/2] Move sequencer to builtin

2013-06-10 Thread Felipe Contreras
On Mon, Jun 10, 2013 at 12:34 PM, Matthieu Moy
matthieu@grenoble-inp.fr wrote:
 Felipe Contreras felipe.contre...@gmail.com writes:

 It is not bad behavior. It is bad behavior *in your opinion*,

 And in essentially everyone else on this list, it seems.

So? An opinion shared by a billion people is still an opinion, not a
fact. To think otherwise is to fall in the argumentum ad populum
fallacy.

 an opinion that wouldn't be shared by other projects, like the Linux
 kernel.

 Googling your name and LKML gives me this in the first page (addressed
 to you):

 https://lkml.org/lkml/2012/4/12/434
 I'm stupider for just reading your email. Go away.

 https://lkml.org/lkml/2012/4/15/112
 I'll make one more try at explaining to you, but then I'll just set my
 mail reader to ignore you, because judging by past performance (not
 just in this thread) you will just continue to argue.

 I don't follow the lkml so maybe I've just been unlucky and Google
 didn't show me an accurate sample, but arguing that your behavior is
 welcome on the LKML seems weird.

Now you are committing two fallacies at the same time; argument from
authority and hasty generalization.

Yes, Linus Torvalds lost his temper with me, he has done so with so
many people that's hardly surprising. I still think he is wrong, but
to prove it I need information that is not readily available, and it's
not that important anyway.

That doesn't mean that Linus' opinion is shared by the list (or any
other Linux mailing list); if you think so you are committing the
hasty generalization fallacy.

And if you think Linus' opinion means something is a fact you commit
the argument from authority fallacy.

None of this mean that my patches are not welcome in LKML, or any
other Linux mailing list.

I repeat what Linus said:

Talk is cheap, show me the code.

-- 
Felipe Contreras
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] diff: add --ignore-blank-lines option

2013-06-10 Thread Junio C Hamano
Antoine Pelisse apeli...@gmail.com writes:

 On Sun, Jun 9, 2013 at 10:07 PM, Junio C Hamano gits...@pobox.com wrote:
 When any ignore blank option is used, there will be lines that
 actually has changes (hence should be shown with +/-) but we
 deliberately ignore their changes (hence, if they ever appear in the
 hunk, they do so as context lines prefixed with SP not +/-).  When
 we do so, we show the lines from the postimage in the context.

 Don't we actually use preimage (see below) ? I think using pre-image
 allows the patch to be applicable to another tree (but ignoring the
 space changes).

But the result of such patch application is not usually what you
want to use.  If we use postimage (which by the way was a deliberate
design decision we made earlier), at least the review of the patch
is easier because you would see the end result more clearly.

 If we actually hide new blank lines that are in the context, it means
 that we won't be able to apply a patch with 2 new blank lines in the 3
 line context.

Yes, but I do not think the point of --ignore-blank-lines is to
produce a patch that can be applied in the first place.  It is to
allow easier eyeballing.

 Anyway, I'm starting to think that show blank lines changes near
 other changes makes sense more and more sense.

Probably.
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] build: get rid of the notion of a git library

2013-06-10 Thread Jeff King
On Sun, Jun 09, 2013 at 07:30:31PM +0200, Vincent van Ravesteijn wrote:

 I think that libgit.a should contain all code to be able to carry out
 all functions of git. The stuff in builtin/ is just a command-line
 user interface. Whether or not sequencer should be in builtin depends
 on whether the sequencer is only part of this command-line user
 interface.

One code organization issue I have not seen mentioned is that there is
more CLI than what is in builtin, and libgit.a does more than simply
provide code for the sources in builtin/. There are also external
commands shipped in git.git that are not linked against git.c or the
other builtins.

Once upon a time, all commands were that way, and that was the origin of
libgit.a: the set of common code used by all of the C commands in
git.git. Over time, those commands became builtins (mostly to keep the
size of the libexec dir down). These days there are only a handful of
external commands left, mostly ones that have startup time overhead from
the dynamic loader (e.g., remote-curl, http-push, imap-send).

That is what libgit.a _is_ now.  I do not mean to imply any additional
judgement on what it could be. But if the goal is to make libgit.a
functions that programs outside git.git would want, and nothing else,
we may want to additionally split out a libgit-internal.a consisting
of code that is used by multiple externals in git, but which would not
be appropriate for clients to use.

For example, I think most of http.c is in that boat, as it is full of
wrappers for curl code that are of enough quality to reuse within git,
but a little too half-baked to be part of a stable API.

We can always link directly against http.o, too, of course. The point of
putting the files into a static library is that it makes the link
faster, and if there are only a handful of such links, it may not be
worth the effort.

-Peff
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Different diff strategies in add --interactive

2013-06-10 Thread John Keeping
On Mon, Jun 10, 2013 at 05:11:41PM -0400, Jeff King wrote:
 On Mon, Jun 10, 2013 at 12:28:55PM -0700, Junio C Hamano wrote:
  John Keeping j...@keeping.me.uk writes:
  
   I think the first thing to do is read the diff.algorithm setting in
   git-add--interactive and pass its value to the underlying diff-index and
   diff-files commands, but should we also have a command line parameter to
   git-add to specify the diff algorithm in interactive mode?  And if so,
   can we simply add --diff-algorithm to git-add, or is that too
   confusing?
  
  Making git add--interactive read from diff.algorithm is probably a
  good idea, because the command itself definitely is a Porcelain.  We
  would probably need a way to defeat the configured default for
  completeness, either:
  
  git add -p --diff-algorithm=default
  git -c diff.algorithm=default add -p
  
  but I suspect that a new option to git add that only takes effect
  together with -p is probably an overkill, only in order to support
  the former and not having to say the latter, but I can be persuaded
  either way.
 
 Worse than that, you would need to add such an option to checkout -p,
 reset -p, stash -p, etc. I think the latter form you suggest is
 probably acceptable in this case.

That's what I'm planning to do at the moment, if anyone wants to extend
it further in the future then that can be built on top.

 Overall, I think respecting diff.algorithm in add--interactive is a very
 sane thing to do. I would even be tempted to say we should allow a few
 other select diff options (e.g., fewer or more context lines). If you
 allowed diff options like this:
 
   git add --patch=--patience -U5
 
 that is very flexible, but I would not want to think about what the code
 does when you pass --patch=--raw or equal nonsense.

An alternative would be to permit them to be set from within the
interactive UI.  I'd find it quite useful to experiment with various
diff options when I encounter a hunk that isn't as easy to pick as I'd
like.  I expect it would be very hard to do that on a per-hunk basis,
although per-file doesn't seem like it would be too hard.

I don't intend to investigate that though - respecting diff.algorithm is
good enough for my usage.

 But I cannot off the top of my head think of other options besides -U
 that would be helpful. I have never particularly wanted it for add -p,
 either, though I sometimes generate patches to the list with a greater
 number of context lines when I think it makes the changes to a short
 function more readable.

--function-context might also be useful, but that's in the same category
as -U.

The patch I'm using is below.  I'm not sure how we can test this though;
it seems fragile to invent a patch that appears different with different
diff algorithms.  Any suggestions?

-- 8 --
 git-add--interactive.perl | 5 +
 1 file changed, 5 insertions(+)

diff --git a/git-add--interactive.perl b/git-add--interactive.perl
index d2c4ce6..0b0fac2 100755
--- a/git-add--interactive.perl
+++ b/git-add--interactive.perl
@@ -44,6 +44,8 @@ my ($diff_new_color) =
 
 my $normal_color = $repo-get_color(, reset);
 
+my $diff_algorithm = ($repo-config('diff.algorithm') or 'default');
+
 my $use_readkey = 0;
 my $use_termcap = 0;
 my %term_escapes;
@@ -731,6 +733,9 @@ sub run_git_apply {
 sub parse_diff {
my ($path) = @_;
my @diff_cmd = split( , $patch_mode_flavour{DIFF});
+   if ($diff_algorithm ne default) {
+   push @diff_cmd, --diff-algorithm=${diff_algorithm};
+   }
if (defined $patch_mode_revision) {
push @diff_cmd, $patch_mode_revision;
}
-- 
1.8.3.779.g691e267

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [IGNORE] Implement 'git rebase' in ruby

2013-06-10 Thread Felipe Contreras
On Mon, Jun 10, 2013 at 3:07 PM, Ramkumar Ramachandra
artag...@gmail.com wrote:
 Felipe Contreras wrote:
 I think that's the only way forward, since the Git project doesn't
 wish to be improved.

 Perhaps it's time for me to create a pseudonym, and when you have to
 do that to land clearly good patches, you know something is *REALLY*
 wrong with the project.

 I ask only for your patience, Felipe.

How much time? A day? A week? A month? Not even a year would make my
patches to 'git cherry-pick' and 'git rebase' be magically applied.

This is not my first patch that gets rejected, but it's the first one
that gets rejected by Junio without even looking at it. What is
anybody supposed to think about that?

-- 
Felipe Contreras
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 6/6] template: Fix comment indentation in pre-rebase hook

2013-06-10 Thread Richard Hartmann
On Mon, Jun 10, 2013 at 9:52 PM, Junio C Hamano gits...@pobox.com wrote:


 I think offsetting the actual commands to the right is correct, but
 if these match and if this is empty should be flushed to left as
 this patch shows.

I actually considered this and decided against it as it seemed to be
deliberate. Should I re-roll and re-send?

I will gladly re-send the whole, or part of the, series once I know
which patches are OK and which need more work.


Richard
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] build: get rid of the notion of a git library

2013-06-10 Thread Felipe Contreras
On Mon, Jun 10, 2013 at 4:45 PM, Jeff King p...@peff.net wrote:

 That is what libgit.a _is_ now.  I do not mean to imply any additional
 judgement on what it could be. But if the goal is to make libgit.a
 functions that programs outside git.git would want, and nothing else,
 we may want to additionally split out a libgit-internal.a consisting
 of code that is used by multiple externals in git, but which would not
 be appropriate for clients to use.

That might make sense, but that still doesn't clarify what belongs in
./*.o, and what belongs in ./builtin/*.o. And right now that creates a
mess where you have code shared between ./builtin/*.o that is defined
in cache.h (overlay_tree_on_cache), and some in builtin.h
(init_copy_notes_for_rewrite). And it's not clear what should be done
when code in ./*.o needs to access functionality in ./builtin/*.o,
specially if that code is only useful for git builtins, and nothing
else.

-- 
Felipe Contreras
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Different diff strategies in add --interactive

2013-06-10 Thread Jeff King
On Mon, Jun 10, 2013 at 10:46:38PM +0100, John Keeping wrote:

  Overall, I think respecting diff.algorithm in add--interactive is a very
  sane thing to do. I would even be tempted to say we should allow a few
  other select diff options (e.g., fewer or more context lines). If you
  allowed diff options like this:
  
git add --patch=--patience -U5
  
  that is very flexible, but I would not want to think about what the code
  does when you pass --patch=--raw or equal nonsense.
 
 An alternative would be to permit them to be set from within the
 interactive UI.  I'd find it quite useful to experiment with various
 diff options when I encounter a hunk that isn't as easy to pick as I'd
 like.  I expect it would be very hard to do that on a per-hunk basis,
 although per-file doesn't seem like it would be too hard.

That's an interesting idea, for a subset of options (e.g., increase
context for this hunk). I suspect implementing it would be painful,
though, as you would have to re-run diff, and you have no guarantee of
getting the same set of hunks (e.g., the hunk might end up coalesced
with another).

 I don't intend to investigate that though - respecting diff.algorithm is
 good enough for my usage.

I don't blame you. :)

 diff --git a/git-add--interactive.perl b/git-add--interactive.perl
 index d2c4ce6..0b0fac2 100755
 --- a/git-add--interactive.perl
 +++ b/git-add--interactive.perl
 @@ -44,6 +44,8 @@ my ($diff_new_color) =
  
  my $normal_color = $repo-get_color(, reset);
  
 +my $diff_algorithm = ($repo-config('diff.algorithm') or 'default');
 +
  my $use_readkey = 0;
  my $use_termcap = 0;
  my %term_escapes;
 @@ -731,6 +733,9 @@ sub run_git_apply {
  sub parse_diff {
   my ($path) = @_;
   my @diff_cmd = split( , $patch_mode_flavour{DIFF});
 + if ($diff_algorithm ne default) {
 + push @diff_cmd, --diff-algorithm=${diff_algorithm};
 + }
   if (defined $patch_mode_revision) {
   push @diff_cmd, $patch_mode_revision;

Yeah, that looks like the sane way to do it to me. As a perl style
thing, I think the usual way of spelling 'default' is 'undef'. I.e.:

  my $diff_algorithm = $repo-config('diff.algorithm');
  ...
  if (defined $diff_algorithm) {
  push @diff_cmd, --diff-algorithm=$diff_algorithm;
  }

-Peff
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] build: get rid of the notion of a git library

2013-06-10 Thread Jeff King
On Mon, Jun 10, 2013 at 04:52:57PM -0500, Felipe Contreras wrote:

 On Mon, Jun 10, 2013 at 4:45 PM, Jeff King p...@peff.net wrote:
 
  That is what libgit.a _is_ now.  I do not mean to imply any additional
  judgement on what it could be. But if the goal is to make libgit.a
  functions that programs outside git.git would want, and nothing else,
  we may want to additionally split out a libgit-internal.a consisting
  of code that is used by multiple externals in git, but which would not
  be appropriate for clients to use.
 
 That might make sense, but that still doesn't clarify what belongs in
 ./*.o, and what belongs in ./builtin/*.o. And right now that creates a
 mess where you have code shared between ./builtin/*.o that is defined
 in cache.h (overlay_tree_on_cache), and some in builtin.h
 (init_copy_notes_for_rewrite). And it's not clear what should be done
 when code in ./*.o needs to access functionality in ./builtin/*.o,
 specially if that code is only useful for git builtins, and nothing
 else.

My general impression of the goal of our current code organization is:

  1. builtin/*.c should each contain a single builtin command and its
 supporting static functions. Each file gets linked into git.o to
 make the main git executable.

  2. ./*.c is one of:

   a. Shared code usable by externals and builtins, which gets
  linked into libgit.a

   b. An external command itself, with its own main(). It gets
  linked against libgit.a.

  3. Functions in libgit.a should be defined in a header file specific
 to their module (e.g., refs.h). cache.h picks up the slack for
 things that are general, or too small to get their own header file,
 or otherwise don't group well.

I said it was a goal, because I know that we do not follow that in
many places, so it is certainly easy to find counter-examples (and nor
do I think it cannot be changed; I am just trying to describe the
current rationale). Under that organization, there is no place for code
that does not go into libgit.a, but is not a builtin command in itself.
There was never a need in the past, because libgit.a was a bit of a
dumping ground for linkable functions, and nobody cared that it had
everything and the kitchen sink.

If we want to start caring, then we probably need to create a separate
kitchen sink-like library, with the rule that things in libgit.a
cannot depend on it. In other words, a support library for Git's
commands, for the parts that are not appropriate to expose as part of a
library API.

-Peff
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] build: get rid of the notion of a git library

2013-06-10 Thread Felipe Contreras
On Mon, Jun 10, 2013 at 5:06 PM, Jeff King p...@peff.net wrote:
 On Mon, Jun 10, 2013 at 04:52:57PM -0500, Felipe Contreras wrote:

 On Mon, Jun 10, 2013 at 4:45 PM, Jeff King p...@peff.net wrote:

  That is what libgit.a _is_ now.  I do not mean to imply any additional
  judgement on what it could be. But if the goal is to make libgit.a
  functions that programs outside git.git would want, and nothing else,
  we may want to additionally split out a libgit-internal.a consisting
  of code that is used by multiple externals in git, but which would not
  be appropriate for clients to use.

 That might make sense, but that still doesn't clarify what belongs in
 ./*.o, and what belongs in ./builtin/*.o. And right now that creates a
 mess where you have code shared between ./builtin/*.o that is defined
 in cache.h (overlay_tree_on_cache), and some in builtin.h
 (init_copy_notes_for_rewrite). And it's not clear what should be done
 when code in ./*.o needs to access functionality in ./builtin/*.o,
 specially if that code is only useful for git builtins, and nothing
 else.

 My general impression of the goal of our current code organization is:

   1. builtin/*.c should each contain a single builtin command and its
  supporting static functions. Each file gets linked into git.o to
  make the main git executable.

We already know this is not the case. Maybe this should be fixed by
moving all the shared code between builtins to libgit.a, but maybe we
already know at some level this is not wise, and that's why we haven't
done so.

 If we want to start caring, then we probably need to create a separate
 kitchen sink-like library, with the rule that things in libgit.a
 cannot depend on it. In other words, a support library for Git's
 commands, for the parts that are not appropriate to expose as part of a
 library API.

Yes, that's clearly what we should be doing, which is precisely what
my patch that creates builtin/lib.a does.

So we have two options:

a) Do what we clearly should do; create builtin/lib.a, and move code
there that is specific to builtin commands.

b) Do what we think we have been doing; and move _all_ shared code to
libgit.a (which shouldn't be called libgit, because it's not really a
library), and cleanup builtin/*.c so they don't share anything among
themselves directly.

I vote for a), not only because we already know that's what we
_should_ do, but because we are basically already there.

Leaving things as they are is not really an option; that's a mess.

-- 
Felipe Contreras
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v5 00/36] Massive improvents to rebase and cherry-pick

2013-06-10 Thread Phil Hord
On Sun, Jun 9, 2013 at 3:37 PM, Felipe Contreras
felipe.contre...@gmail.com wrote:

 On Sun, Jun 9, 2013 at 2:24 PM, Felipe Contreras
 felipe.contre...@gmail.com wrote:
  Same as before, but:

 Also, remove the patches from Martin von Zweigbergk, because
 apparently some people have trouble understanding that they were not
 part of this series.


Please try not to sound disgruntled. This attitude is toxic. You have
turned this change into a complaint: that some people have trouble
understanding which shows a genuine lack of understanding and
compassion on your part.  Instead you can phrase your change notes
more helpfully if you make changes only when you yourself actually
believe the change should be made.  If you cannot do this, perhaps you
can pretend.

  Also, remove the patches from Martin von Zweigbergk, which
  are not a part of this series.

Or even this:

  Also, remove the patches from Martin von Zweigbergk to avoid
  confusing reviewers.

Thanks,
Phil
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 6/6] template: Fix comment indentation in pre-rebase hook

2013-06-10 Thread Junio C Hamano
Richard Hartmann richih.mailingl...@gmail.com writes:

 On Mon, Jun 10, 2013 at 9:52 PM, Junio C Hamano gits...@pobox.com wrote:


 I think offsetting the actual commands to the right is correct, but
 if these match and if this is empty should be flushed to left as
 this patch shows.

 I actually considered this and decided against it as it seemed to be
 deliberate. Should I re-roll and re-send?

 I will gladly re-send the whole, or part of the, series once I know
 which patches are OK and which need more work.

[PATCH 1/6] templates: Fewer subprocesses in pre-commit hook

  I agree with Peff that less fork is a bad justification for this
  change, and also

echo 'First line
second line
third lie'

  looks somewhat bad.

[PATCH 2/6] templates: Reformat pre-commit hook's message

  I think it is a good thing to make the output short by widening.

[PATCH 3/6] templates: Fix spelling in pre-commit hook

  Good.

[PATCH 4/6] Documentation: Update manpage for pre-commit hook

  I debated myself if it should say The hook _by default_ prevents
  addition of non-ASCII filenames, hinting that it can be
  configured out if it is unwanted.

  Other than that, I think it is a good addition.

[PATCH 5/6] templates: Fix ASCII art in pre-rebase hook

  Good, but see Peff's comments on the explanation.

[PATCH 6/6] template: Fix comment indentation in pre-rebase hook

  After reading the original once again, it is fine as-is without
  the change at all, I think.  Alternatively, if these match and
  if this is empty lines can be flushed to the left, which also is
  readable.

Thanks.
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 6/6] template: Fix comment indentation in pre-rebase hook

2013-06-10 Thread Richard Hartmann
On Tue, Jun 11, 2013 at 12:57 AM, Junio C Hamano gits...@pobox.com wrote:

 [PATCH 1/6] templates: Fewer subprocesses in pre-commit hook

   I agree with Peff that less fork is a bad justification for this
   change, and also

 echo 'First line
 second line
 third lie'

   looks somewhat bad.

The repeated echo also looks bad, imo. Also, 2/6 depends on this to
save lines. Should I rewrite with EOF, keep as is, or drop?


 [PATCH 2/6] templates: Reformat pre-commit hook's message

   I think it is a good thing to make the output short by widening.

As I said, 2/6 depends on 1/6 to some extent.


 [PATCH 4/6] Documentation: Update manpage for pre-commit hook

   I debated myself if it should say The hook _by default_ prevents
   addition of non-ASCII filenames, hinting that it can be
   configured out if it is unwanted.

   Other than that, I think it is a good addition.

Will update once I know the complete TODO.


 [PATCH 5/6] templates: Fix ASCII art in pre-rebase hook

   Good, but see Peff's comments on the explanation.

OK.


 [PATCH 6/6] template: Fix comment indentation in pre-rebase hook

   After reading the original once again, it is fine as-is without
   the change at all, I think.  Alternatively, if these match and
   if this is empty lines can be flushed to the left, which also is
   readable.

I think I will flush and capitalize, then.


Richard
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] build: get rid of the notion of a git library

2013-06-10 Thread Junio C Hamano
Jeff King p...@peff.net writes:

 My general impression of the goal of our current code organization is:

   1. builtin/*.c should each contain a single builtin command and its
  supporting static functions. Each file gets linked into git.o to
  make the main git executable.

Correct; that is what we aimed for when we made builtin-*.c (later
moved to builtin/*.c).  Some builtin/*.c files can contain more than
one cmd_foo implementations, so single is not a solid rule, and it
does not have to be, because all of them are expected to be linked
into the main binary together with git.c to be called from main().

And as you hinted, if some global data or functions in it turns out
to be useful for standalone binaries, their definitions must migrate
out of buitlin/*.c to ./*.c files, because standalone binaries with
their own main() definition cannot be linked with builtin/*.o, the
latter of which requires to be linked with git.o with its own main().

   2. ./*.c is one of:

a. Shared code usable by externals and builtins, which gets
   linked into libgit.a

b. An external command itself, with its own main(). It gets
   linked against libgit.a.

   3. Functions in libgit.a should be defined in a header file specific
  to their module (e.g., refs.h). cache.h picks up the slack for
  things that are general, or too small to get their own header file,
  or otherwise don't group well.

 I said it was a goal, because I know that we do not follow that in
 many places, so it is certainly easy to find counter-examples (and nor
 do I think it cannot be changed; I am just trying to describe the
 current rationale). Under that organization, there is no place for code
 that does not go into libgit.a, but is not a builtin command in itself.
 There was never a need in the past, because libgit.a was a bit of a
 dumping ground for linkable functions, and nobody cared that it had
 everything and the kitchen sink.

The rationale behind libgit.a was so that make targets for the
standalone binaries (note: all of them were standalone in the
beginning) do not have to list *.o files that each of them needs to
be linked with.  It was primary done as a convenient way to have the
linker figure out the dependency and link only what was needed.
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 2/4] commit-queue: LIFO or priority queue of commits

2013-06-10 Thread Junio C Hamano
Jeff King p...@peff.net writes:

 On Mon, Jun 10, 2013 at 11:56:33AM -0700, Junio C Hamano wrote:

  or similar. I didn't change the name, either. It may be silly to call it
  commit_queue still since it is now more general. I simply called mine
  queue (I wanted pqueue, but that conflicted with globals defined by
  OpenSSL; yours is a more general queue anyway, so maybe that is a good
  name).
 
 I agree that it makes sense not to call it either commit-queue or
 pqueue.  While at it, the filenames should probably be moved as
 well, no?

 Yeah, definitely. I left all of that as an exercise for you, since the
 name change will involve a lot of fallout in the other patches.

OK, I pushed out a result of some renaming and rebasing.  Notable
changes are:

 - The data and API is called prio-queue and they live in prio-queue.[ch];

 - The test script is also named test-prio-queue.c, to leave the
   door open for other kinds of queue;

 - For now, record_author_date() does the obvious read-sha1-file and
   free; and

 - The comparison callback's function signature had three void *,
   so they are named in the header file now.  Also two thing
   pointers are marked as const void *.

I may have flipped the comparison  vs = as well.

Thanks.
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v5 00/36] Massive improvents to rebase and cherry-pick

2013-06-10 Thread Felipe Contreras
On Mon, Jun 10, 2013 at 5:55 PM, Phil Hord phil.h...@gmail.com wrote:
 On Sun, Jun 9, 2013 at 3:37 PM, Felipe Contreras
 felipe.contre...@gmail.com wrote:

 On Sun, Jun 9, 2013 at 2:24 PM, Felipe Contreras
 felipe.contre...@gmail.com wrote:
  Same as before, but:

 Also, remove the patches from Martin von Zweigbergk, because
 apparently some people have trouble understanding that they were not
 part of this series.

 Please try not to sound disgruntled. This attitude is toxic. You have
 turned this change into a complaint: that some people have trouble
 understanding which shows a genuine lack of understanding and
 compassion on your part.  Instead you can phrase your change notes
 more helpfully if you make changes only when you yourself actually
 believe the change should be made.  If you cannot do this, perhaps you
 can pretend.

That would be dishonest. Moreover, there wasn't a good reason to
remove these patches, I made it clear I added those patches only to
make sure the real patches of this series worked correctly. Also, I
clarified that to Thomas Rast[1], only to receive a totally
unconstructive comment[2].

Why don't you ask Thomas Rast to be more constructive[2]?

Then Johan Herland uses that as an example of a constructive
comment[3]. Why don't you correct Johan Herland?

No, you pick the easy target: me.

I already dd more than my fair share by carrying these 36 patches
through several iterations, yet you ask *more* of me. Why don't you
ask more of the people that just hit reply on their MUA?

Thomas' task was easy; he simply had to say Oh, these aren't meant to
be applied, got it.

[1] http://article.gmane.org/gmane.comp.version-control.git/227039
[2] http://article.gmane.org/gmane.comp.version-control.git/227040
[3] http://article.gmane.org/gmane.comp.version-control.git/227102

-- 
Felipe Contreras
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] build: get rid of the notion of a git library

2013-06-10 Thread Felipe Contreras
On Mon, Jun 10, 2013 at 6:41 PM, Junio C Hamano gits...@pobox.com wrote:

 For the particular case of trying to make sequencer.o, which does
 not currently have dependencies on builtin/*.o, depend on something
 that is in builtin/notes.o, the link phase of standalone that wants
 anything from revision.o (which is pretty much everything ;-) goes
 like this:

 upload-pack.c   wants handle_revision_opt etc.
 revision.c  provides handle_revision_opt
 wants name_decoration etc.
 log-tree.c  provides name_decoration
 wants append_signoff
 sequencer.c provides append_signoff

 So sequencer.o _is_ meant to be usable from standalone and belongs
 to libgit.a

Not after my patch. It moves append_signoff *out* of sequencer, which
in fact has nothing to do with the sequencer in the first place.

 If sequencer.o wants to call init_copy_notes_for_rewrite() and its
 friends [*1*] that are currently in builtin/notes.o, first the
 called function(s) should be moved outside builtin/notes.o to
 notes.o or somewhere more library-ish place to be included in
 libgit.a, which is meant to be usable from standalone.


 [Footnote]

 *1* ... which is a very reasonable thing to do.  But moving
 sequencer.o to builtin/sequencer.o is *not* the way to do this.

By now we all know what is the *CURRENT* way to do this; in other
words, the status quo, which is BTW all messed up, because builtin/*.o
objects depend on each other already.

We are discussing the way it *SHOULD* be. Why aren't you leaning on that?

-- 
Felipe Contreras
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] build: get rid of the notion of a git library

2013-06-10 Thread Junio C Hamano
Felipe Contreras felipe.contre...@gmail.com writes:

 *1* ... which is a very reasonable thing to do.  But moving
 sequencer.o to builtin/sequencer.o is *not* the way to do this.

 By now we all know what is the *CURRENT* way to do this; in other
 words, the status quo, which is BTW all messed up, because builtin/*.o
 objects depend on each other already.

builtin/*.o are allowed to depend on each other.  They are by
definition builtins, meant to be linked into a single binary.

 We are discussing the way it *SHOULD* be. Why aren't you leaning on that?

And I do not see the reason why builtin/*.o should not depend on
each other.  It is not messed up at all.  They are meant to be
linked into a single binary---that is what being built-in is.

A good way forward, the way it *SHOULD* be, is to slim the builtin/*.o
by moving parts that do not have to be in the single git binary
but are also usable in standalone binaries out of them.

And that is what I just suggested.
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Пл

2013-06-10 Thread Мурад


Отправлено с iPhone

Re: [PATCH v5 00/36] Massive improvents to rebase and cherry-pick

2013-06-10 Thread Phil Hord
On Mon, Jun 10, 2013 at 7:43 PM, Felipe Contreras
felipe.contre...@gmail.com wrote:
 On Mon, Jun 10, 2013 at 5:55 PM, Phil Hord phil.h...@gmail.com wrote:
 On Sun, Jun 9, 2013 at 3:37 PM, Felipe Contreras
 felipe.contre...@gmail.com wrote:

 On Sun, Jun 9, 2013 at 2:24 PM, Felipe Contreras
 felipe.contre...@gmail.com wrote:
  Same as before, but:

 Also, remove the patches from Martin von Zweigbergk, because
 apparently some people have trouble understanding that they were not
 part of this series.

 Please try not to sound disgruntled. This attitude is toxic. You have
 turned this change into a complaint: that some people have trouble
 understanding which shows a genuine lack of understanding and
 compassion on your part.  Instead you can phrase your change notes
 more helpfully if you make changes only when you yourself actually
 believe the change should be made.  If you cannot do this, perhaps you
 can pretend.

 That would be dishonest. Moreover, there wasn't a good reason to
 remove these patches, I made it clear I added those patches only to
 make sure the real patches of this series worked correctly. Also, I
 clarified that to Thomas Rast[1], only to receive a totally
 unconstructive comment[2].

 Why don't you ask Thomas Rast to be more constructive[2]?

 Then Johan Herland uses that as an example of a constructive
 comment[3]. Why don't you correct Johan Herland?

I do not see what their comments have to do with your attitude.
Aren't your own man with cogent self-will and personal responsibility?
 Why should I also have to consider these other emails which I have
not bothered to read yet?

 No, you pick the easy target: me.

You seem to have mistaken me for someone else.  Moreover, you seem to
have mistaken you for someone else.  You are the least easy target I
know of on this list.  Everyone else seems open to community
standards.


 I already dd more than my fair share by carrying these 36 patches
 through several iterations, yet you ask *more* of me. Why don't you
 ask more of the people that just hit reply on their MUA?

 Thomas' task was easy; he simply had to say Oh, these aren't meant to
 be applied, got it.

 [1] http://article.gmane.org/gmane.comp.version-control.git/227039
 [2] http://article.gmane.org/gmane.comp.version-control.git/227040
 [3] http://article.gmane.org/gmane.comp.version-control.git/227102

I did not comment on their posts because they did not catch my eye.
Rebase and cherry-pick improvements are interesting to me, so I read
your post.  I will try not to make this mistake again.

Phil
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


http://info.yahoo.com/legal/ru/yahoo/mail/atos.html

2013-06-10 Thread Мурад


Отправлено с iPhone пл

Re: [PATCH v5 00/36] Massive improvents to rebase and cherry-pick

2013-06-10 Thread Felipe Contreras
On Mon, Jun 10, 2013 at 8:09 PM, Phil Hord phil.h...@gmail.com wrote:
 On Mon, Jun 10, 2013 at 7:43 PM, Felipe Contreras
 felipe.contre...@gmail.com wrote:
 On Mon, Jun 10, 2013 at 5:55 PM, Phil Hord phil.h...@gmail.com wrote:
 On Sun, Jun 9, 2013 at 3:37 PM, Felipe Contreras
 felipe.contre...@gmail.com wrote:

 On Sun, Jun 9, 2013 at 2:24 PM, Felipe Contreras
 felipe.contre...@gmail.com wrote:
  Same as before, but:

 Also, remove the patches from Martin von Zweigbergk, because
 apparently some people have trouble understanding that they were not
 part of this series.

 Please try not to sound disgruntled. This attitude is toxic. You have
 turned this change into a complaint: that some people have trouble
 understanding which shows a genuine lack of understanding and
 compassion on your part.  Instead you can phrase your change notes
 more helpfully if you make changes only when you yourself actually
 believe the change should be made.  If you cannot do this, perhaps you
 can pretend.

 That would be dishonest. Moreover, there wasn't a good reason to
 remove these patches, I made it clear I added those patches only to
 make sure the real patches of this series worked correctly. Also, I
 clarified that to Thomas Rast[1], only to receive a totally
 unconstructive comment[2].

 Why don't you ask Thomas Rast to be more constructive[2]?

 Then Johan Herland uses that as an example of a constructive
 comment[3]. Why don't you correct Johan Herland?

 I do not see what their comments have to do with your attitude.

My attitude is fine. I sent a lot of patches, and I made clear that
some of them were meant only to test the rest. And I clarified that
twice.

There's nothing wrong with that.

 Aren't your own man with cogent self-will and personal responsibility?
  Why should I also have to consider these other emails which I have
 not bothered to read yet?

Don't be that girlfriend that brings the times you haven't picked up
the towel properly when talking about something completely and totally
different.

When talking about the attitude in *this* patch series, limit yourself
to *this* patch series.

 No, you pick the easy target: me.

 You seem to have mistaken me for someone else.  Moreover, you seem to
 have mistaken you for someone else.  You are the least easy target I
 know of on this list.

 Everyone else seems open to community standards.

And yet you try to correct me, who did nothing wrong. And ignore the
transgressions of the other people, whom I already demonstrated
actually *did* do something wrong. How convenient of you to not
mention my arguments *at all*.

 I already dd more than my fair share by carrying these 36 patches
 through several iterations, yet you ask *more* of me. Why don't you
 ask more of the people that just hit reply on their MUA?

 Thomas' task was easy; he simply had to say Oh, these aren't meant to
 be applied, got it.

 [1] http://article.gmane.org/gmane.comp.version-control.git/227039
 [2] http://article.gmane.org/gmane.comp.version-control.git/227040
 [3] http://article.gmane.org/gmane.comp.version-control.git/227102

 I did not comment on their posts because they did not catch my eye.
 Rebase and cherry-pick improvements are interesting to me, so I read
 your post.  I will try not to make this mistake again.

Yes, because my patches are so obviously wrong.

If you were a truly productive member of this community, you would
ignore all the bullshit, take the patches, fix whatever is technically
wrong with them (nothing), and resend them.

But no, that would be way too productive.

-- 
Felipe Contreras
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] build: get rid of the notion of a git library

2013-06-10 Thread Felipe Contreras
On Mon, Jun 10, 2013 at 7:04 PM, Junio C Hamano gits...@pobox.com wrote:
 Felipe Contreras felipe.contre...@gmail.com writes:

 *1* ... which is a very reasonable thing to do.  But moving
 sequencer.o to builtin/sequencer.o is *not* the way to do this.

 By now we all know what is the *CURRENT* way to do this; in other
 words, the status quo, which is BTW all messed up, because builtin/*.o
 objects depend on each other already.

 builtin/*.o are allowed to depend on each other.  They are by
 definition builtins, meant to be linked into a single binary.

That's not what John Keeping said[1]. I'm going to assume he was
wrong, but I don't think that's relevant for my point.

Either way, the meaning of builtin/ should probably be explained somewhere.

 We are discussing the way it *SHOULD* be. Why aren't you leaning on that?

 And I do not see the reason why builtin/*.o should not depend on
 each other.  It is not messed up at all.  They are meant to be
 linked into a single binary---that is what being built-in is.

 A good way forward, the way it *SHOULD* be, is to slim the builtin/*.o
 by moving parts that do not have to be in the single git binary
 but are also usable in standalone binaries out of them.

 And that is what I just suggested.

But init_copy_notes_for_rewrite() can *not* be used by anything other
than git builtins. Standalone binaries will never use such a function,
therefore it doesn't belong in libgit.a. Another example is
alias_lookup(). They belong in builtin/lib.a.

[1] http://article.gmane.org/gmane.comp.version-control.git/227017

-- 
Felipe Contreras
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] build: get rid of the notion of a git library

2013-06-10 Thread Felipe Contreras
On Mon, Jun 10, 2013 at 8:53 PM, Junio C Hamano gits...@pobox.com wrote:
 Junio C Hamano gits...@pobox.com writes:

 And I do not see the reason why builtin/*.o should not depend on
 each other.  It is not messed up at all.  They are meant to be
 linked into a single binary---that is what being built-in is.

 A good way forward, the way it *SHOULD* be, is to slim the builtin/*.o
 by moving parts that do not have to be in the single git binary
 but are also usable in standalone binaries out of them.

 Actually, as long as these pieces are currently used by builtins,
 moving them (e.g. init_copy_notes_for_rewrite()) out of builtin/*.o
 will not make these parts not to be in the single git binary at
 all, so the above is grossly misstated.

  - There may be pieces of usefully reusable code buried in
builtin/*.o;

  - By definition, any code (piece of data or function definition) in
builtin/*.o cannot be used in standalone binaries, because all of
builtin/*.o expect to link with git.o and expect their cmd_foo()
getting called from main in it;

  - By moving the useful reusable pieces ont of builtin/*.o and
adding them to libgit.a, these pieces become usable from
standalone binaries as well.

What if these reusable pieces should not be used by standalone binaries?

 And that is the reason why slimming builtin/*.o is the way it
 *SHOULD* be.

 Another thing to think about is looking at pieces of data and
 functions defined in each *.o files and moving things around within
 them.  For example, looking at the dependency chain I quoted earlier
 for sequencer.o to build upload-pack, which is about responding to
 git fetch on the sending side:

 upload-pack.c   wants handle_revision_opt etc.
 revision.c  provides handle_revision_opt
 wants name_decoration etc.
 log-tree.c  provides name_decoration
 wants append_signoff
 sequencer.c provides append_signoff

 It is already crazy. There is no reason for the pack sender to be
 linking with the sequencer interpreter machinery. If the function
 definition (and possibly other ones) are split into separate source
 files (still in libgit.a), git-upload-pack binary does not have to
 pull in the whole sequencer.c at all.

Agreed, which is precisely why my patches move that code out of
sequencer.c. Maybe log-tree.c is not the right destination, but it is
a step in the right direction.

 Coming back to the categorization Peff earlier made in the thread, I
 think I am OK with adding new two subdirectories to the root level,
 i.e.

 builtin/- the ones that define cmd_foo()

As is the case right now.

 commands/   - the ones that has main() for standalone commands

Good.

 libsrc/ - the ones that go in libgit.a

lib/ is probably descriptive enough.

But this doesn't answer the question; what about code that is shared
between builtins, but cannot be used by standalone programs?

I'd wager it belongs to builtin/ and should be linked to
builtin/lib.a. Maybe you would like to have a separate builtin/lib/
directory, but I think that's overkill.

 We may also want to add another subdirectory to hold scripted
 Porcelains, but the primary topic of this thread is what to do about
 the C library, so it is orthogonal in that sense, but if we were to
 go in the group things in subdirectories to slim the root level
 direction, it may be worth considering doing so at the same time.

Agreed. Plus there's completions, shell prompt, and other script-like
tools that shouldn't really belong in contrib/, and probably installed
by default.

-- 
Felipe Contreras
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v4 45/45] tests: update topology tests

2013-06-10 Thread Martin von Zweigbergk
On Sun, Jun 9, 2013 at 9:40 AM, Felipe Contreras
felipe.contre...@gmail.com wrote:
 Signed-off-by: Felipe Contreras felipe.contre...@gmail.com
 ---
  t/t3425-rebase-topology-merges.sh | 15 ++-
  1 file changed, 6 insertions(+), 9 deletions(-)

 diff --git a/t/t3425-rebase-topology-merges.sh 
 b/t/t3425-rebase-topology-merges.sh
 index 5400a05..96cc479 100755
 --- a/t/t3425-rebase-topology-merges.sh
 +++ b/t/t3425-rebase-topology-merges.sh
 @@ -70,9 +70,8 @@ test_run_rebase () {
 test_linear_range \'$expected\' d..
 
  }
 -#TODO: make order consistent across all flavors of rebase
 -test_run_rebase success 'e n o' ''
 -test_run_rebase success 'e n o' -m
 +test_run_rebase success 'n o e' ''
 +test_run_rebase success 'n o e' -m
  test_run_rebase success 'n o e' -i

If you do end up re-sending the series on top of my series, I'd prefer
to see the end result having the first argument inlined, so these few
lines become simply:

test_run_rebase success ''
test_run_rebase success -m
test_run_rebase success -i
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] Documentation/CommunityGuidelines

2013-06-10 Thread Michael Haggerty
On 06/10/2013 03:28 PM, Ramkumar Ramachandra wrote:
 I've tried to write down a bare minimum, without restating the obvious.

Thank you for drafting a proposed CommunityGuidelines document; I think
such a document would be helpful.  But I don't like the overall flavor
of your proposal; frankly, it sounds to me more like

Documentation/GuidelinesForCommunityToBendOverBackwardsToLiveWithFCsProvocations

and I don't think that is healthy.

 0. You do not take offense, no matter what.  If someone attacks you
 irrationally, you do not respond.  This is a public mailing list, and
 we are all rational people: the attacker has already humiliated
 herself in public, and everyone can see that.

This is secondary to the more important rule, do not attack other
people on the mailing list.  Not taking offense is at best a(n
important) fallback position for those regrettable occasions when
somebody else has already violated the primary guideline.

 1. You do not take sides or vote.  Do not post emails under the
 pretext of agreement: repeating what has already been said does not
 strengthen the argument.  Post only if you have something unique to
 add to the discussion.
 
 2. You stop pointing fingers.  Every heated discussion requires more
 than one participant, and a flamewar requires many participants.  If
 you participate, you have implicitly agreed to share the blame for
 whatever happens on the thread.  People can judge for themselves who
 is to blame.

Here your wording every heated discussion requires more than one
participant seems to put more of the blame for heated discussions on
participants 2..N and give a pass to participant number one.

 3. Thou shalt not commit logical fallacies.  The ones that are most
 common on this list: strawman, ad hominem, burden of proof, false
 cause, the texas sharpshooter, and appeal to authority.

I think putting a rule like this in CommunityGuidelines puts too much
weight on it.  In my recollection, pointing out other people's supposed
logical fallacies is far more often used on this list as a nitpicking
diversionary tactic that usually leads a conversation *further* away
from the real issues.  I think it would be a mistake to encourage such
formal and stylized argument on the ML.

 4. Lead by example.  If you do not like how someone presents
 themselves on the list, you counter it by presenting yourself nicely
 on the list.  Others will follow your example, making that person's
 behavior the minority.  It is far more powerful than explicitly
 stating what is acceptable behavior and what is not.

Leading by example is a great approach, and has the effect that you
describe on the majority of people.  But I also think it would be
helpful for the community to agree on a few very minimum standards of
behavior that we insist on, and to call people out (preferably in a
private email) if they fall short of these standards.

 5. We are a community of programmers, and we are here to collaborate
 on code.  The argument that leads to higher efficiency and better code
 has an automatic advantage over the argument that doesn't.
 
 If someone breaks one of these rules, there's a very simple way to
 communicate this to them: you don't respond to their email.
 Optionally, respond to their email off-list calmly explaining what
 went wrong.

I would prefer a community standards document that looks more like this:

* Treat other community members with courteousness and respect.

* Conduct disagreements on a technical, not a personal, level.  It is
unacceptable to attack another community member personally, even by
insinuation.

* Keep in mind that email is a medium prone to misunderstandings, and
that many mailing list participants do not speak English as their first
language.  Interpret other people's emails charitably.  If you are not
sure that you understand, ask for clarification.  Assume good intentions
on the part of others, and do not attribute technical disagreements to
ulterior motives.  Choose your words carefully to help other people
avoid misinterpreting them, and avoid hyperbole.

* Strive to keep the mailing list a forum for effective collaboration.
Only post if you have something worthwhile to add to the discussion.  Be
concise and do not repeat what has already been said.  Code reviews,
contributions of patches, and concrete data such as bug reports are far
preferable to philosophizing, vague suggestions, and whining.  Avoid
bikeshedding and do not participate in flame wars.  Avoid revisiting
settled debates unless the facts have changed.

* Accept reviewers' comments gratefully and take them very seriously.
Show that you appreciate the help by giving the reviewer the benefit of
the doubt.  If, after careful consideration, you find that you cannot
agree with a reviewer's suggestion, explain your reasoning carefully
without taking or giving offense, and seek compromise.

* When reviewing other peoples' code, be tactful and constructive.  Set
high expectations, but do what you 

Re: [PATCH v4 45/45] tests: update topology tests

2013-06-10 Thread Felipe Contreras
On Mon, Jun 10, 2013 at 11:37 PM, Martin von Zweigbergk
martinv...@gmail.com wrote:
 On Sun, Jun 9, 2013 at 9:40 AM, Felipe Contreras
 felipe.contre...@gmail.com wrote:
 Signed-off-by: Felipe Contreras felipe.contre...@gmail.com
 ---
  t/t3425-rebase-topology-merges.sh | 15 ++-
  1 file changed, 6 insertions(+), 9 deletions(-)

 diff --git a/t/t3425-rebase-topology-merges.sh 
 b/t/t3425-rebase-topology-merges.sh
 index 5400a05..96cc479 100755
 --- a/t/t3425-rebase-topology-merges.sh
 +++ b/t/t3425-rebase-topology-merges.sh
 @@ -70,9 +70,8 @@ test_run_rebase () {
 test_linear_range \'$expected\' d..
 
  }
 -#TODO: make order consistent across all flavors of rebase
 -test_run_rebase success 'e n o' ''
 -test_run_rebase success 'e n o' -m
 +test_run_rebase success 'n o e' ''
 +test_run_rebase success 'n o e' -m
  test_run_rebase success 'n o e' -i

 If you do end up re-sending the series on top of my series, I'd prefer
 to see the end result having the first argument inlined, so these few
 lines become simply:

Somebody else would need to do that, there's no point in me sending
these patches, just to increase the number of my patches that get
completely ignored by Junio.

-- 
Felipe Contreras
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] Documentation/CommunityGuidelines

2013-06-10 Thread Felipe Contreras
On Mon, Jun 10, 2013 at 12:42 PM, Junio C Hamano gits...@pobox.com wrote:
 Robin H. Johnson robb...@gentoo.org writes:

 On Mon, Jun 10, 2013 at 04:04:29PM +0200,  Matthieu Moy wrote:
 Célestin Matte celestin.ma...@ensimag.fr writes:

  Le 10/06/2013 15:28, Ramkumar Ramachandra a écrit :
  0. You do not take offense, no matter what.  If someone attacks you
  irrationally, you do not respond.  This is a public mailing list, and
  we are all rational people: the attacker has already humiliated
  herself in public, and everyone can see that.
 
  Herself?
  Typo I guess :)

 Not necessarily. It's quite common in english to use she when the
 gender is not known.
 Could you please use themself instead?

 I think himself or herself is the politically correct form ;-)

 But more seriously.

 The intent behind the document might be a noble one, but I am afraid
 that the text is too broad and vague and does not address the real
 issue to be of practical use.

 Taking one bullet point from the top for example:

 0. You do not take offense, no matter what.  If someone attacks
 you irrationally, you do not respond.  This is a public mailing
 list, and we are all rational people: the attacker has already
 humiliated herself in public, and everyone can see that.

 What does saying we are all rational people help when the
 attacker poses a risk to destroy the community?  What does we are
 all rational people even mean in this sentence?

Science shows that humans are in fact, not rational people. It's
simply one of our countless limitations. We acknowledge we have
physical limitations, but we forget our mental limitations.

We should aim to be rational people, yes, but we are not.

 It does not address the real cause of flamewars---why do rational
 people feel the need to respond when an irrational comment is made,
 e.g. when a reasonable review comments were responded not with
 either Yeah, you are right, thanks. or Not really, because you
 missed this case, I think...  but with nitpicks with immaterial
 details or repetition without justification that takes account that
 the reviewer is in disagreement and there must be some reason behind
 it, i.e. a poisonous behaviour?

First of all, you should not refer to it as poisonous behavior.
Maybe you think it's poisonous, maybe everyone else in the mailing
list agrees it's poisonous, but talk doesn't make things real,
otherwise there were a lot of real witches in the past.

You should refer to it as 'what could be considered poisonous
behavior'. That is accurate.

Calling it poisonous behavior at best can be considered a logical
fallacy, and at worst could even be described as a poisonous comment
itself.

 I suspect it mostly has to do with the desire to make sure that
 bystanders do not get an impression that the one who speaks last
 gives the conclusion to the discussion, so stating The attacker
 being the one who speaks last in the discussion does not mean the
 conclusion is his. explicitly might be one way to make it more
 practically useful by alleviating the urge to respond, instead of
 saying no matter what.

 I dunno.

I think we all know at some level why flame war arise, as XKCD makes
it comically succinct[1].

If somebody wants to argue for the sake of arguing, they should go to
some forum, or reddit, or something else other than the mailing list.

In the mailing list you should avoid flamewars. If you have identified
a flamewar, don't poke it, and ask for others to do the same; don't
throw lumber unto the flames.

I know you worry that somebody is wrong on the Internet, and you worry
that somebody else might read that, and think the person that is wrong
is actually right. But you cannot fix that. Move on. If the reader is
smart, they'll understand the signal Don't throw lumber unto the
flames. followed by silence from other members of the community.

Trying to correct somebody often sends the wrong signal; you
validate the other person's point of view as something worth arguing
about. If you truly think a flamewar is taking place, resist your urge
to participate in it, and mute it.

Maybe it's not really flamewar, and something important is being
discussed, but you should leave the people that do not think a
flamewar is taking place to argue with each other, and stay out of
that. If you think it's a flamewar, and you comment in it, you are
making it worst, and perhaps turning it into a real flamewar if it
wasn't.

In general; do not participate in a flamewar. Period.

[1] http://xkcd.com/386/

-- 
Felipe Contreras
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] Documentation/CommunityGuidelines

2013-06-10 Thread Felipe Contreras
On Mon, Jun 10, 2013 at 8:28 AM, Ramkumar Ramachandra
artag...@gmail.com wrote:
 I've tried to write down a bare minimum, without restating the obvious.

I think there's an even more important number 0:

Always assume good faith. When discussing through digital mediums,
it's very easy to misconstrue the tone and intentions of other
parties, so it's better to err on the side of caution, and if one is
mistaken, assuming good faith doesn't cause harm, while the contrary
does irreparable damage. This does not mean that one should continue
to assume good faith when there's evidence to the contrary.

 0. You do not take offense, no matter what.  If someone attacks you
 irrationally, you do not respond.  This is a public mailing list, and
 we are all rational people: the attacker has already humiliated
 herself in public, and everyone can see that.

I don't like the wording of this. Attacker, humiliation,
everyone; it's very absolutist rhetoric. Yes, you see the other
person as an attacker, and yes you think she is humiliating herself in
front of everyone, but thinking so doesn't make it so.

An even better and less absolutist version would be:

Do not participate in flamewars. It is very tempting to prove somebody
else wrong, but if you think a discussion is turning into a flamewar,
just say so, and avoid it. Do not throw lumber to the flames. You
might feel you should correct the erroneous claims being made in
public, but by replying you are making things worst. Leave the
erroneous (in your opinion) claims alone, the damage has been done,
all that is left is what *you* can do, and the best you can do is
ignore them.

 3. Thou shalt not commit logical fallacies.  The ones that are most
 common on this list: strawman, ad hominem, burden of proof, false
 cause, the texas sharpshooter, and appeal to authority.

It might be better to turn this negative rule into a positive one:
Discuss on the basis of logic and evidence. Then you can describe
the common logical fallacies, and I would add If you make a claim, be
prepared it to defend it with evidence, or add an appropriate
qualifier; probably, most likely, I think, etc.

 If someone breaks one of these rules, there's a very simple way to
 communicate this to them: you don't respond to their email.
 Optionally, respond to their email off-list calmly explaining what
 went wrong.

I think you should reply, but not to her, to the mailing list, asking
for others to don't reply. Then mute the thread. I already explained
that about in the comment about flamewars.

There's a corollary to that that works rather well in the LKML; you
are permitted one flamewar per year. I'm not going to explain why this
is a good thing, because unfortunately there's an irrational negative
bias against me already, but there's a reason why this is a good rule.
Even if you don't agree it's only one flamewar per year per person,
it's not that much.

-- 
Felipe Contreras
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


<    1   2