Re: [PATCH v2 1/4] t4014: more tests about appending s-o-b lines

2012-12-02 Thread Brandon Casey
On Sat, Dec 1, 2012 at 11:06 PM, Torsten Bögershausen tbo...@web.de wrote:
 On 22.11.12 17:38, Nguyễn Thái Ngọc Duy wrote:

 Signed-off-by: Nguyễn Thái Ngọc Duy pclo...@gmail.com
 ---
  t/t4014-format-patch.sh | 145 
 
  1 file changed, 145 insertions(+)
 + echo -n subject | append_signoff actual 


 echo -n is not portable, and we use printf everywhere.
 I found one echo -n in line  996.

 Can we squeeze that in, before going to next?

I got it.  I'll squash it into the next series.

-Brandon
--
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: does a successful 'git gc' imply 'git fsck'

2012-12-02 Thread Sitaram Chamarty
On Sun, Dec 2, 2012 at 9:58 AM, Shawn Pearce spea...@spearce.org wrote:
 On Sat, Dec 1, 2012 at 6:31 PM, Sitaram Chamarty sitar...@gmail.com wrote:
 Background: I have a situation where I have to fix up a few hundred
 repos in terms of 'git gc' (the auto gc seems to have failed in many
 cases; they have far more than 6700 loose objects).  I also found some
 corrupted objects in some cases that prevent the gc from completing.

 I am running git gc followed by git fsck.  The majority of the
 repos I have worked through so far appear to be fine, but in the
 larger repos (upwards of 2-3 GB) the git fsck is taking almost 5 times
 longer than the 'gc'.

 If I could assume that a successful 'git gc' means an fsck is not
 needed, I'd save a lot of time.  Hence my question.

 Not really. For example fsck verifies that every blob when
 decompressed and fully inflated matches its SHA-1. gc only checks

OK that makes sense.  After I posted I happened to check using strace
and kinda guessed this from what I saw, but it's nice to have
confirmation.

 connectivity of the commit and tree graph by making sure every object
 was accounted for. But when creating the output pack it only verifies
 a CRC-32 was correct when copying the bits from the source to the
 destination, it does not verify that the data decompresses and matches
 the SHA-1 it should match.

 So it depends on what level of check you need to feel safe.

Yup; thanks.

All the repos my internal client manages are mirrored in multiple
places, and they set (or were at least told to set, heh!)
receive.fsckObjects so the lesser check is fine in most cases.

-- 
Sitaram
--
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 8/8] wrap_in_html(): process message in bulk rather than line-by-line

2012-12-02 Thread Junio C Hamano
Michael Haggerty mhag...@alum.mit.edu writes:

 Nevertheless, the old code was even *more* broken because it added a
 /pre regardless of whether the separator line had been seen,...

OK. I'll rewrite the tail-end of the original log message to read:

The old code would have created invalid output when there was no
body, emitting a closing /pre without a blank line nor an opening
pre after the header.  The new code simply returns in this
situation without doing harm (even though either would not make much
sense in the context of imap-send that is meant to send out patches).

and squash this in.

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: does a successful 'git gc' imply 'git fsck'

2012-12-02 Thread Junio C Hamano
Sitaram Chamarty sitar...@gmail.com writes:

 If I could assume that a successful 'git gc' means an fsck is not
 needed, I'd save a lot of time.  Hence my question.

When it does repack -a, it at least scans the whole history so you
would be sure that all the commits and trees are readable for the
purpose of enumerating the objects referred by them (and a bit flip
in them will likely be noticed by zlib inflation).

But a gc does not necessarily run repack -a when it does not see
too many pack files, so it can end up scanning only the surface of
the history to collect the recently created loose objects into a
pack, and stop its traversal without going into existing packfiles.
--
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 0/5] ignore SIG{INT,QUIT} when launching editor

2012-12-02 Thread Junio C Hamano
Jeff King p...@peff.net writes:

 Since this can be thought of as act more like system(3), I wondered
 whether the signal-ignore logic should be moved into run-command, or
 even used by default for blocking calls to run_command (which are
 basically our version of system(3)). But it is detrimental in the common
 case that the child is not taking control of the terminal, and is just
 an implementation detail (e.g., we call git update-ref behind the
 scenes, but the user does not know or care). If they hit ^C during such
 a run and we are ignoring SIGINT, then either:

   1. we will notice the child died by signal and report an
  error in the subprocess rather than just dying; the end result is
  similar, but the error is unnecessarily confusing

   2. we do not bother to check the child's return code (because we do
  not care whether the child succeeded or not, like a gc --auto);
  we end up totally ignoring the user's request to abort the
  operation

 So I do not think we care about this behavior except for launching the
 editor. And the signal-propagation behavior of 5/5 is really so weirdly
 editor-specific (because it is about behaving well whether the child
 blocks signals or not).

Nicely explained.  Very much appreciated.
--
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 8/8] wrap_in_html(): process message in bulk rather than line-by-line

2012-12-02 Thread Michael Haggerty
On 12/02/2012 10:25 AM, Junio C Hamano wrote:
 Michael Haggerty mhag...@alum.mit.edu writes:
 
 Nevertheless, the old code was even *more* broken because it added a
 /pre regardless of whether the separator line had been seen,...
 
 OK. I'll rewrite the tail-end of the original log message to read:
 
 The old code would have created invalid output when there was no
 body, emitting a closing /pre without a blank line nor an opening
 pre after the header.  The new code simply returns in this
 situation without doing harm (even though either would not make much
 sense in the context of imap-send that is meant to send out patches).
 
 and squash this in.

ACK.  Thanks.

Michael

-- 
Michael Haggerty
mhag...@alum.mit.edu
http://softwareswirl.blogspot.com/
--
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/RFC 1/5] mingw: make fgetc raise SIGINT if apropriate

2012-12-02 Thread Junio C Hamano
Erik Faye-Lund kusmab...@gmail.com writes:

 @@ -1538,13 +1563,7 @@ static sig_handler_t timer_fn = SIG_DFL;
  static unsigned __stdcall ticktack(void *dummy)
  {
   while (WaitForSingleObject(timer_event, timer_interval) == 
 WAIT_TIMEOUT) {
 - if (timer_fn == SIG_DFL) {
 - if (isatty(STDERR_FILENO))
 - fputs(Alarm clock\n, stderr);
 - exit(128 + SIGALRM);
 - }
 - if (timer_fn != SIG_IGN)
 - timer_fn(SIGALRM);
 + mingw_raise(SIGALRM);
   if (one_shot)
   break;
   }

This hunk seems to have been based on a slightly newer codebase than
what I have, and I had to wiggle the patch a bit to make the series
apply.  Please double check the result when I push out the 'pu'
branch.

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 v6 2/8] push: add advice for rejected tag reference

2012-12-02 Thread Junio C Hamano
Chris Rorvick ch...@rorvick.com writes:

  static void advise_pull_before_push(void)
  {
   if (!advice_push_non_ff_current || !advice_push_nonfastforward)
 @@ -241,6 +245,11 @@ static void advise_checkout_pull_push(void)
   advise(_(message_advice_checkout_pull_push));
  }
  
 +static void advise_ref_already_exists(void)
 +{
 + advise(_(message_advice_ref_already_exists));
 +}
 +
  static int push_with_options(struct transport *transport, int flags)
  {
   int err;
 @@ -272,6 +281,8 @@ static int push_with_options(struct transport *transport, 
 int flags)
   advise_use_upstream();
   else
   advise_checkout_pull_push();
 + } else if (reject_reasons  REJECT_ALREADY_EXISTS) {
 + advise_ref_already_exists();
   }

The existing advise_* functions that are called from this function
honor the advice.* configuration, and advise_ref_already_exists()
would want to follow suit here (it is OK to do so as a follow-up
patch without further rerolling the entire series).

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


[PATCH] t9402: sed -i is not portable

2012-12-02 Thread Torsten Bögershausen
On some systems sed allows the usage of e.g.
sed -i -e s/line1/line2/ afile
to edit the file in place.
Other systems don't allow that: one observed behaviour is that
sed -i -e s/line1/line2/ afile
creates a backup file called afile-e, which breaks the test.
As sed -i is not part of POSIX, avoid it.

Use test_cmp, makes the test easier to debug.
Chain all shell commands with  to detect all kinds of failure.
While at it, Use TAB to indent.

Signed-off-by: Torsten Bögershausen tbo...@web.de
---
Note: this should go on top of pu

 t/t9402-git-cvsserver-refs.sh | 764 +-
 1 file changed, 383 insertions(+), 381 deletions(-)

diff --git a/t/t9402-git-cvsserver-refs.sh b/t/t9402-git-cvsserver-refs.sh
index 858ef0f..39c6b01 100755
--- a/t/t9402-git-cvsserver-refs.sh
+++ b/t/t9402-git-cvsserver-refs.sh
@@ -10,59 +10,58 @@ tags, branches and other git refspecs'
 #
 
 check_start_tree() {
-rm -f $WORKDIR/check.list
-echo start $1  ${WORKDIR}/check.log
+   rm -f $WORKDIR/check.list
+   echo start $1  ${WORKDIR}/check.log
 }
 
 check_file() {
-sandbox=$1
-file=$2
-ver=$3
-GIT_DIR=$SERVERDIR git show ${ver}:${file} \
+   sandbox=$1
+   file=$2
+   ver=$3
+   GIT_DIR=$SERVERDIR git show ${ver}:${file} \
 $WORKDIR/check.got 2 $WORKDIR/check.stderr
-test_cmp $WORKDIR/check.got $sandbox/$file
-stat=$?
-echo check_file $sandbox $file $ver : $stat  $WORKDIR/check.log
-echo $file  $WORKDIR/check.list
-return $stat
+   test_cmp $WORKDIR/check.got $sandbox/$file
+   stat=$?
+   echo check_file $sandbox $file $ver : $stat  
$WORKDIR/check.log
+   echo $file  $WORKDIR/check.list
+   return $stat
 }
 
 check_end_tree() {
-sandbox=$1
-expectCount=$(wc -l  $WORKDIR/check.list)
-cvsCount=$(find $sandbox -name CVS -prune -o -type f -print | wc -l)
-test x$cvsCount = x$expectCount
-stat=$?
-echo check_end $sandbox : $stat cvs=$cvsCount expect=$expectCount \
-$WORKDIR/check.log
-return $stat
+   sandbox=$1 
+   wc -l  $WORKDIR/check.list  expected 
+   find $sandbox -type f | grep -v /CVS  
$WORKDIR/check.cvsCount 
+   wc -l  $WORKDIR/check.cvsCount actual 
+   test_cmp expected actual 
+   rm expected actual 
+   sort  $WORKDIR/check.list  expected 
+   sort  $WORKDIR/check.cvsCount | sed -e s%cvswork/%% 
actual 
+   test_cmp expected actual 
+   rm expected actual
 }
 
 check_end_full_tree() {
-sandbox=$1
-ver=$2
-expectCount=$(wc -l  $WORKDIR/check.list)
-cvsCount=$(find $sandbox -name CVS -prune -o -type f -print | wc -l)
-gitCount=$(git ls-tree -r $2 | wc -l)
-test x$cvsCount = x$expectCount -a x$gitCount = x$expectCount
-stat=$?
-echo check_end $sandbox : $stat cvs=$cvsCount git=$gitCount 
expect=$expectCount \
-$WORKDIR/check.log
-return $stat
+   sandbox=$1 
+   sort  $WORKDIR/check.list expected 
+   find $sandbox -name CVS -prune -o -type f -print | sed -e 
s%$sandbox/%% | sort act1 
+   test_cmp expected act1 
+   git ls-tree -r $2 | sed -e s/^.*blob [0-9a-fA-F]*[]*// 
| sort  act2 
+   test_cmp expected act2 
+   rm expected act1 act2
 }
 
 #
 
 check_diff() {
-diffFile=$1
-vOld=$2
-vNew=$3
-rm -rf diffSandbox
-git clone -q -n . diffSandbox 
-( cd diffSandbox 
-  git checkout $vOld 
-  git apply -p0 --index ../$diffFile 
-  git diff --exit-code $vNew )  check_diff_apply.out 21
+   diffFile=$1
+   vOld=$2
+   vNew=$3
+   rm -rf diffSandbox
+   git clone -q -n . diffSandbox 
+   ( cd diffSandbox 
+   git checkout $vOld 
+   git apply -p0 --index ../$diffFile 
+   git diff --exit-code $vNew )  check_diff_apply.out 
21
 }
 
 #
@@ -70,17 +69,17 @@ check_diff() {
 cvs /dev/null 21
 if test $? -ne 1
 then
-skip_all='skipping git-cvsserver tests, cvs not found'
-test_done
+   skip_all='skipping git-cvsserver tests, cvs not found'
+   test_done
 fi
 if ! test_have_prereq PERL
 then
-skip_all='skipping git-cvsserver tests, perl not available'
-test_done
+   skip_all='skipping git-cvsserver tests, perl not available'
+   test_done
 fi
 $PERL_PATH -e 'use DBI; use DBD::SQLite' /dev/null 21 || {
-skip_all='skipping git-cvsserver tests, Perl SQLite interface unavailable'
-test_done
+   skip_all='skipping git-cvsserver tests, Perl SQLite interface 
unavailable'
+   test_done
 }
 
 unset GIT_DIR GIT_CONFIG
@@ -94,465 +93,468 @@ export CVSROOT CVS_SERVER
 
 

[RFC] Add basic syntax check on shell scripts

2012-12-02 Thread Torsten Bögershausen
The test suite needs to be run on different platforms.
As it may be difficult for contributors to catch syntax
which work on GNU/linux, but is unportable, make a quick check
for the most common problems.
sed -i, echo -n or array in shell scripts
This list is not complete, and may need to be extended

Signed-off-by: Torsten Bögershausen tbo...@web.de
---
We add 1 second test execution time
Is this a useful idea at all?
 
 t/t9-syntax-check.sh | 28 
 1 file changed, 28 insertions(+)
 create mode 100755 t/t9-syntax-check.sh

diff --git a/t/t9-syntax-check.sh b/t/t9-syntax-check.sh
new file mode 100755
index 000..c4a9289
--- /dev/null
+++ b/t/t9-syntax-check.sh
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+test_description='Basic check if shell syntax is portable'
+
+. ./test-lib.sh
+
+
+test_expect_success 'No arrays in shell scripts' '
+   expected 
+   (grep -i -n ^[  ]*declare[  ][  ]* ../*.sh ../../git-* 
actual 21 || : ) 
+   test_cmp expected actual 
+   rm expected actual
+'
+
+test_expect_success 'No sed -i' '
+   expected 
+   (grep -n ^[ ]*sed[  ][  ]*\-i ../*.sh ../../git-* actual 
21 || : ) 
+   test_cmp expected actual 
+   rm expected actual
+'
+
+test_expect_success 'No echo -n' '
+   expected 
+   (grep -n ^[ ]*echo[ ][  ]*\-n ../*.sh ../../git-* 
actual 21 || : ) 
+   test_cmp expected actual 
+   rm expected actual
+'
+test_done
-- 
1.8.0.197.g5a90748

--
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: [RFC] Add basic syntax check on shell scripts

2012-12-02 Thread Stefano Lattarini
On 12/02/2012 02:17 PM, Torsten Bögershausen wrote:
 The test suite needs to be run on different platforms.
 As it may be difficult for contributors to catch syntax
 which work on GNU/linux, but is unportable, make a quick check
 for the most common problems.
 sed -i, echo -n or array in shell scripts
 This list is not complete, and may need to be extended
 
 Signed-off-by: Torsten Bögershausen tbo...@web.de
 ---
 We add 1 second test execution time
 Is this a useful idea at all?
 
FWIW, I think such an idea is useful (and also easy to implement,
so another +1 from me).

  t/t9-syntax-check.sh | 28 
  1 file changed, 28 insertions(+)
  create mode 100755 t/t9-syntax-check.sh
 
 diff --git a/t/t9-syntax-check.sh b/t/t9-syntax-check.sh
 new file mode 100755
 index 000..c4a9289
 --- /dev/null
 +++ b/t/t9-syntax-check.sh
 @@ -0,0 +1,28 @@
 +#!/bin/sh
 +
 +test_description='Basic check if shell syntax is portable'
 +
 +. ./test-lib.sh
 +
 +
 +test_expect_success 'No arrays in shell scripts' '
 + expected 
 + (grep -i -n ^[  ]*declare[  ][  ]* ../*.sh ../../git-* 
 actual 21 || : ) 

Here I'd simply use:

! grep -n ^declare[ ][  ]* ../*.sh ../../*.sh

And similarly for the tests below.

In addition, the globs above still miss some files ('perf/perf-lib.sh'
and 'valgrind/analyze.sh', for example); so we might want to improve
it, using, say, git ls-files (or find(1), in case the test is to be
run also from distribution tarballs).

HTH,
  Stefano
--
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: [RFC] remove/deprecate 'submodule init' and 'sync'

2012-12-02 Thread W. Trevor King
Before I get into the details, I'd like to point out that I actually
understand the purpose of `submodule init` now ;).  To avoid further
confusion, my current one-line command summaries would be:

  init:   mark a submodule as active for future submodule operation
  deinit: mark a submodule as inactive for future submodule operation
  sync:   update remote.name.origin in submodules to reflect changes
  in .gitmodules or the superproject's remote URL.

I don't think we disagree on that, we just don't agree on how to
implement it.

Currently, Git uses submodule.name.url in the superproject's local
configuration as a marker for submodule activation.  This is not (as
far as I know) discussed in the docs, which is why I initially
missunderstood the purpose of `init` to be “setup the superproject's
local configuration so we don't have to keep resolving the submodules
URL relative to the superproject's upstream URL”.  With the proposed
`deinit` docs, this role for the submodule.name.url is mentioned,
but not in a place where casual users will be able to easily connect
it to the purpose of `init`.

I floated using submodule.name.update (with 'none' for inactive and
anything else for active) as an alternative marker:

On Sat, Dec 01, 2012 at 01:16:43PM -0500, W. Trevor King wrote:
 On Sat, Dec 01, 2012 at 07:04:05PM +0100, Jens Lehmann wrote:
  Am 01.12.2012 18:49, schrieb W. Trevor King:
   I think removing `init` will cause some compatibility issues anyway,
   so I was re-imaging how you do it.  I don't think update='none' and
   don't populate my submodule are distinct ideas, while a locally
   configured url=somwhere and please populate my submodule are (with
   the blank-url case defaulting to the superproject itself).
  
  Why would we want to remove init? It still has to copy the url
  setting (and it would be a compatibility nightmare if we would change
  that, imagine different git versions used on the same work tree).
 
 In my init-less rewrite, it doesn't have to copy the url setting.
 People using older versions of Git would need to run `init` using
 their old version.  Having the url defined in .git/config won't break
 my init-less submodule commands, it just means that the value in
 .gitmodules will be masked.

but that doesn't seem to be going over very well.  Junio may have been
weighing in obliquely with:

On Sat, Dec 01, 2012 at 06:00:06PM -0800, Junio C Hamano wrote:
 Jens Lehmann jens.lehm...@web.de writes:
  [snip v1 deinit commit message]
 
 I fully agree with your analysis on the reason why the url element
 is special and has to be copied to $GIT_DIR/config, but when you
 deinit (or uninit) a submodule to say you are no longer interested
 in it and do not want it populated in the context of the
 superproject, I am not sure if removing only submodule.$name.url (so
 that when you later decide to init it again, you will keep the
 values for submodule.$name.update and other things from the previous
 life) is the sane thing to do, or it is better to remove
 submodule.$name.* altogether as if an earlier init has never
 happened.  Would it be worth analyzing the pros-and-cons here?

Let me take another stab at presenting my argument in favor of a
different activity marker.

Proposal:

Add a new boolean option, submodule.name.active, to explicitly mark
submodules as active (with “active” defined as “to be returned by
module_list()”).  Strip down `init` (and the --init part of `update
--init`) to just setting this option to true.  `deinit` only sets this
option to false (but a `deinit --clean` could remove the whole
submodule.name section).

With this in place, extracting URLs for submodule operations be
similar to the extraction of other variables (.gitmodules defaults
with superproject-local .git/config overrides).  This also makes it
easier to track maintenance updates in .gitmodules-defined URLs,
because you aren't forced to bake overrides into your local
.git/config

The upgrade path from earlier versions of Git is easy: if
submodule.name.active is unset, use the presence of
submodule.name.url to determine its initial value.

In the case where you check out an earlier superproject commit which
is missing a particular submodule (or remove a submodule without
deinit-ing), the presense of an active setting in .git/config should
not cause an error, which they currently seem to:

On Sat, Dec 01, 2012 at 11:37:14AM -0500, W. Trevor King wrote:
 On Sat, Dec 01, 2012 at 04:56:02PM +0100, Jens Lehmann wrote:
  Am 01.12.2012 00:52, schrieb Phil Hord:
   If I never 'submodule init' a submodule, it does not get visited by
   'git submodule foreach', among others.  I think some people use this
   behavior explicitly.
  
   On the other hand, I've also notice that a submodule which I have
   removed does not get de-inited later one.  It causes my 'git submodule
   foreach' to emit errors.  :-(
 
  I'm currently hacking on git submodule deinit which removes the 'url'
  setting from git/config. This 

Re: [PATCH v5 0/2] submodule update: add --remote for submodule's upstream changes

2012-12-02 Thread Jens Lehmann
Am 30.11.2012 04:27, schrieb W. Trevor King:
 On Thu, Nov 29, 2012 at 08:11:20PM -0500, Phil Hord wrote:
 On Thu, Nov 29, 2012 at 2:13 PM, W. Trevor King wk...@tremily.us wrote:
 On Thu, Nov 29, 2012 at 01:29:12PM -0500, Phil Hord wrote:
 But I really don't want to figure out how to handle submodule
 collisions during a merge (or rebase!) of my superproject with changes that
 someone else auto-committed in his local $superproject as he and I
 arbitrarily floated up the upstream independently.  There is nothing but
 loathing down that path.

 This is true.  I'm not sure how gitlink collisions are currently
 handled…

 They've always been trouble for me.  But it may be that I am ignorant.
 
 I haven't dealt with any gitlink merges, but I think that supporting
 easy gitlink merges is orthogonal to this --remote option.  For simple
 cases like autocommitted submodule floats, one of the conflicting
 gitlinks will be an ancestor of the other, so it should be easy to
 automate that merge.

Submodule merges where one submodule commit is the ancestor of the
other are already resolved automatically in recent git. So Phil's
example will just work as long as only fast-forward merges are 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] submodule: add 'deinit' command

2012-12-02 Thread Jens Lehmann
Am 02.12.2012 03:00, schrieb Junio C Hamano:
 Jens Lehmann jens.lehm...@web.de writes:
 
 With git submodule init the user is able to tell git he cares about one
 or more submodules and wants to have it populated on the next call to git
 submodule update. But currently there is no easy way he could tell git he
 does not care about a submodule anymore and wants to get rid of his local
 work tree (except he knows a lot about submodule internals and removes the
 submodule.$name.url setting from .git/config himself).

 Help those users by providing a 'deinit' command. This removes the url
 setting from .git/config either for the given submodule(s) or for all
 those which have been initialized if none were given. Complain only when
 for a submodule given on the command line the url setting can't be found
 in .git/config.

 Add tests and link the man pages of git submodule deinit and git rm to
 assist the user in deciding whether removing or unregistering the submodule
 is the right thing to do for him.

 Signed-off-by: Jens Lehmann jens.lehm...@web.de
 ---
 
 I fully agree with your analysis on the reason why the url element
 is special and has to be copied to $GIT_DIR/config, but when you
 deinit (or uninit) a submodule to say you are no longer interested
 in it and do not want it populated in the context of the
 superproject, I am not sure if removing only submodule.$name.url (so
 that when you later decide to init it again, you will keep the
 values for submodule.$name.update and other things from the previous
 life) is the sane thing to do, or it is better to remove
 submodule.$name.* altogether as if an earlier init has never
 happened.  Would it be worth analyzing the pros-and-cons here?

Sure. I was worried about throwing away other settings the user
might have set in the submodule.$name section and the first reflex
was to protect them. But thinking about that again I noticed we are
already throwing away a possibly user customized url setting, so
we already remove a possibly customized setting.

Maybe the principle of least surprise is better followed when we
nuke the whole section, as it might surprise the user more to have
a setting resurrected he customized in the last life cycle of the
submodule than seeing that after an deinit followed by an init all
former customizations are consistently gone. So I tend to think now
that removing the whole section would be the better solution here.

Opinions by other submodule users?
--
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: [RFC] remove/deprecate 'submodule init' and 'sync'

2012-12-02 Thread Jens Lehmann
Am 02.12.2012 20:09, schrieb W. Trevor King:
 Before I get into the details, I'd like to point out that I actually
 understand the purpose of `submodule init` now ;).  To avoid further
 confusion, my current one-line command summaries would be:
 
   init:   mark a submodule as active for future submodule operation
   deinit: mark a submodule as inactive for future submodule operation
   sync:   update remote.name.origin in submodules to reflect changes
   in .gitmodules or the superproject's remote URL.
 
 I don't think we disagree on that, we just don't agree on how to
 implement it.

Nope, it is already implemented and you are arguing to change the
current implementation. To quote from another mail:

Am 01.12.2012 18:49, schrieb W. Trevor King:
 On Sat, Dec 01, 2012 at 06:25:17PM +0100, Jens Lehmann wrote:
 What real world problems do we have with the current init/sync that
 this approach would solve?

 I don't have any, ...

We don't want to change working code and cause compatibility issues
just because we /could/ do things differently, no?
--
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


[PATCH] remote.c: fix grammatical error in comment

2012-12-02 Thread Chris Rorvick
The sentence originally began Note that ... and was changed to
NOTE: ...  This change should have been made at the same time.

Signed-off-by: Chris Rorvick ch...@rorvick.com
---

This applies to the current cr/push-force-tag-update branch.  It can
probably just be folded into the last commit.

Thanks,

Chris

 remote.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/remote.c b/remote.c
index 6309a87..aa6b719 100644
--- a/remote.c
+++ b/remote.c
@@ -1337,8 +1337,8 @@ void set_ref_status_for_push(struct ref *remote_refs, int 
send_mirror,
 *
 * NOTE: We must actually have the old object in
 * order to overwrite it in the remote reference,
-* and that the new object must be commit-ish.
-* These are implied by (b) and (c) respectively.
+* and the new object must be commit-ish.  These are
+* implied by (b) and (c) respectively.
 *
 * (4) it is forced using the +A:B notation, or by
 * passing the --force argument
-- 
1.8.0.1.541.g73be2da

--
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: [RFC] remove/deprecate 'submodule init' and 'sync'

2012-12-02 Thread W. Trevor King
From: W. Trevor King wk...@tremily.us
To: Jens Lehmann jens.lehm...@web.de, Junio C Hamano gits...@pobox.com
Cc: Phil Hord phil.h...@gmail.com, Git git@vger.kernel.org,
Heiko Voigt hvo...@hvoigt.net, Jeff King p...@peff.net,
Shawn Pearce spea...@spearce.org, Nahor nahor.j+gm...@gmail.com
Bcc: 
Subject: Re: [RFC] remove/deprecate 'submodule init' and 'sync'
Reply-To: 
In-Reply-To: 50bbba29.2000...@web.de
 50bbb22a.7050...@web.de
 20121202190929.gg9...@odin.tremily.us
OpenPGP: id=39A2F3FA2AB17E5D8764F388FC29BDCDF15F5BE8;
 url=http://tremily.us/pubkey.txt

On Sun, Dec 02, 2012 at 09:29:29PM +0100, Jens Lehmann wrote:
 Am 02.12.2012 20:09, schrieb W. Trevor King:
  Before I get into the details, I'd like to point out that I actually
  understand the purpose of `submodule init` now ;).  To avoid further
  confusion, my current one-line command summaries would be:
  
init:   mark a submodule as active for future submodule operation
deinit: mark a submodule as inactive for future submodule operation
sync:   update remote.name.origin in submodules to reflect changes
in .gitmodules or the superproject's remote URL.
  
  I don't think we disagree on that, we just don't agree on how to
  implement it.
 
 Nope, it is already implemented and you are arguing to change the
 current implementation.

Agreed.

 To quote from another mail:
 
 Am 01.12.2012 18:49, schrieb W. Trevor King:
  On Sat, Dec 01, 2012 at 06:25:17PM +0100, Jens Lehmann wrote:
  What real world problems do we have with the current init/sync that
  this approach would solve?
 
  I don't have any, ...
 
 We don't want to change working code and cause compatibility issues
 just because we /could/ do things differently, no?

In principle, yes, but in this case I think changing the
implementation does not risk much in the way of compatibility issues
(it only hurts users who rely on `submodule init` setting
submodule.name.url for reasons of their own.  A few of the existing
tests explictly check the url setting, so perhaps there are a number
of users who do require this side effect?

I think this risk is outweighed by the benefits of having a clearer
activation option.  For example:

On Sun, Dec 02, 2012 at 08:55:22PM +0100, Jens Lehmann wrote:
 Sure. I was worried about throwing away other settings the user
 might have set in the submodule.$name section and the first reflex
 was to protect them. But thinking about that again I noticed we are
 already throwing away a possibly user customized url setting, so
 we already remove a possibly customized setting.

With submodule.name.active, there's nothing customized that you'd
have to nuke on deinit (except 'active' iteself, which the user is
explicitly asking for).

Cheers,
Trevor

-- 
This email may be signed or encrypted with GnuPG (http://www.gnupg.org).
For more information, see http://en.wikipedia.org/wiki/Pretty_Good_Privacy
--
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] gitk: add a checkbox to control the visibility of tags

2012-12-02 Thread Lukasz Stelmach
W dniu 02.12.2012 03:16, Junio C Hamano pisze:
 Łukasz Stelmach stl...@poczta.fm writes:
 
 Enable hiding of tags displayed in the tree as yellow labels.
 If a repository is used together with a system like Gerrit
 there may be quite a lot of tags used to control building
 and there may be hardly any place left for commit subjects.

 Signed-off-by: Łukasz Stelmach stl...@poczta.fm
 ---
 
 Paul, this patch is not done against your tree (does not have gitk
 at the top-level),

I did it on the master from github. Should I rebase it onto something else?

 but other than that, the change mimics the way
 existing hideremoes is implemented and looks reasonable to me.
 
 We _may_ want to unify these two hidestuff into a list of patterns
 that hides any ref that match one of the patterns in the list, e.g.
 
   set hidestuff {refs/heads/*/* refs/tags/* refs/remotes/*}
 
 may hide all tags, all remote-tracking branches and local branches
 that have a slash in their names.
 
 But that is an independent change that can come later.

This would make much more sense with gitk being abel to read a
per-repository configuration file, say from [file join $gitdir k] and
then save it there (but only if the file exists). I will send a separate
patch in a moment.

  gitk-git/gitk |   23 +++
  1 files changed, 15 insertions(+), 8 deletions(-)

 diff --git a/gitk-git/gitk b/gitk-git/gitk
 index d93bd99..274b46b 100755
 --- a/gitk-git/gitk
 +++ b/gitk-git/gitk
 @@ -1754,7 +1754,7 @@ proc readrefs {} {
  global tagids idtags headids idheads tagobjid
  global otherrefids idotherrefs mainhead mainheadid
  global selecthead selectheadid
 -global hideremotes
 +global hideremotes hidetags
  
  foreach v {tagids idtags headids idheads otherrefids idotherrefs} {
  catch {unset $v}
 @@ -1776,6 +1776,7 @@ proc readrefs {} {
  set headids($name) $id
  lappend idheads($id) $name
  } elseif {[string match tags/* $name]} {
 +if {$hidetags} continue
  # this lets refs/tags/foo^{} overwrite refs/tags/foo,
  # which is what we want since the former is the commit ID
  set name [string range $name 5 end]
 @@ -2702,7 +2703,7 @@ proc savestuff {w} {
  global cmitmode wrapcomment datetimeformat limitdiffs
  global colors uicolor bgcolor fgcolor diffcolors diffcontext 
 selectbgcolor
  global autoselect autosellen extdifftool perfile_attrs markbgcolor 
 use_ttk
 -global hideremotes want_ttk
 +global hideremotes hidetags want_ttk
  
  if {$stuffsaved} return
  if {![winfo viewable .]} return
 @@ -2725,6 +2726,7 @@ proc savestuff {w} {
  puts $f [list set autosellen $autosellen]
  puts $f [list set showneartags $showneartags]
  puts $f [list set hideremotes $hideremotes]
 +puts $f [list set hidetags $hidetags]
  puts $f [list set showlocalchanges $showlocalchanges]
  puts $f [list set datetimeformat $datetimeformat]
  puts $f [list set limitdiffs $limitdiffs]
 @@ -10864,7 +10866,7 @@ proc create_prefs_page {w} {
  proc prefspage_general {notebook} {
  global NS maxwidth maxgraphpct showneartags showlocalchanges
  global tabstop limitdiffs autoselect autosellen extdifftool 
 perfile_attrs
 -global hideremotes want_ttk have_ttk
 +global hideremotes hidetags want_ttk have_ttk
  
  set page [create_prefs_page $notebook.general]
  
 @@ -10887,6 +10889,9 @@ proc prefspage_general {notebook} {
  ${NS}::checkbutton $page.hideremotes -text [mc Hide remote refs] \
  -variable hideremotes
  grid x $page.hideremotes -sticky w
 +${NS}::checkbutton $page.hidetags -text [mc Hide tag labels] \
 +-variable hidetags
 +grid x $page.hidetags -sticky w
  
  ${NS}::label $page.ddisp -text [mc Diff display options]
  grid $page.ddisp - -sticky w -pady 10
 @@ -10988,7 +10993,7 @@ proc doprefs {} {
  global oldprefs prefstop showneartags showlocalchanges
  global uicolor bgcolor fgcolor ctext diffcolors selectbgcolor 
 markbgcolor
  global tabstop limitdiffs autoselect autosellen extdifftool 
 perfile_attrs
 -global hideremotes want_ttk have_ttk
 +global hideremotes hidetags want_ttk have_ttk
  
  set top .gitkprefs
  set prefstop $top
 @@ -10997,7 +11002,7 @@ proc doprefs {} {
  return
  }
  foreach v {maxwidth maxgraphpct showneartags showlocalchanges \
 -   limitdiffs tabstop perfile_attrs hideremotes want_ttk} {
 +   limitdiffs tabstop perfile_attrs hideremotes hidetags 
 want_ttk} {
  set oldprefs($v) [set $v]
  }
  ttk_toplevel $top
 @@ -7,7 +11122,7 @@ proc prefscan {} {
  global oldprefs prefstop
  
  foreach v {maxwidth maxgraphpct showneartags showlocalchanges \
 -   limitdiffs tabstop perfile_attrs hideremotes want_ttk} {
 +   limitdiffs tabstop perfile_attrs hideremotes hidetags 
 want_ttk} {
  global $v
  set $v $oldprefs($v)
  }
 @@ 

[PATCH] gitk: read and write a repository specific configuration file

2012-12-02 Thread Łukasz Stelmach
Enable gitk read and write repository specific configuration
file: .git/k if the file exists. To make gitk use the local
file simply create one, e.g. with the touch(1) command.

This is very useful if one uses different views for different
repositories. Now there is no need to store all of them in
~/.gitk and make the views list needlesly long.

Signed-off-by: Łukasz Stelmach stl...@poczta.fm
---
 gitk-git/gitk |   25 ++---
 1 files changed, 14 insertions(+), 11 deletions(-)

diff --git a/gitk-git/gitk b/gitk-git/gitk
index d93bd99..60cf4cd 100755
--- a/gitk-git/gitk
+++ b/gitk-git/gitk
@@ -2696,7 +2696,7 @@ proc doprogupdate {} {
 
 proc savestuff {w} {
 global canv canv2 canv3 mainfont textfont uifont tabstop
-global stuffsaved findmergefiles maxgraphpct
+global stuffsaved findmergefiles maxgraphpct gitdir
 global maxwidth showneartags showlocalchanges
 global viewname viewfiles viewargs viewargscmd viewperm nextviewnum
 global cmitmode wrapcomment datetimeformat limitdiffs
@@ -2707,10 +2707,12 @@ proc savestuff {w} {
 if {$stuffsaved} return
 if {![winfo viewable .]} return
 catch {
-   if {[file exists ~/.gitk-new]} {file delete -force ~/.gitk-new}
-   set f [open ~/.gitk-new w]
+   set fn [expr [file exists [file join $gitdir k]] ? \
+   {[file join $gitdir k-new]} : {~/.gitk-new}]
+   if {[file exists $fn]} {file delete -force $fn}
+   set f [open $fn  w]
if {$::tcl_platform(platform) eq {windows}} {
-   file attributes ~/.gitk-new -hidden true
+   catch {file attributes ~/.gitk-new -hidden true}
}
puts $f [list set mainfont $mainfont]
puts $f [list set textfont $textfont]
@@ -2762,7 +2764,7 @@ proc savestuff {w} {
}
puts $f }
close $f
-   file rename -force ~/.gitk-new ~/.gitk
+   file rename -force $fn [regsub {\-new$} $fn {}]
 }
 set stuffsaved 1
 }
@@ -11663,7 +11665,14 @@ namespace import ::msgcat::mc
 ## And eventually load the actual message catalog
 ::msgcat::mcload $gitk_msgsdir
 
+# check that we can find a .git directory somewhere...
+if {[catch {set gitdir [exec git rev-parse --git-dir]}]} {
+show_error {} . [mc Cannot find a git repository here.]
+exit 1
+}
+
 catch {source ~/.gitk}
+catch {source [file join $gitdir k]}
 
 parsefont mainfont $mainfont
 eval font create mainfont [fontflags mainfont]
@@ -11680,12 +11689,6 @@ setui $uicolor
 
 setoptions
 
-# check that we can find a .git directory somewhere...
-if {[catch {set gitdir [exec git rev-parse --git-dir]}]} {
-show_error {} . [mc Cannot find a git repository here.]
-exit 1
-}
-
 set selecthead {}
 set selectheadid {}
 
-- 
1.7.8.6

--
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] gitk: add a checkbox to control the visibility of tags

2012-12-02 Thread Felipe Contreras
On Sat, Dec 1, 2012 at 8:16 PM, Junio C Hamano gits...@pobox.com wrote:

 We _may_ want to unify these two hidestuff into a list of patterns
 that hides any ref that match one of the patterns in the list, e.g.

 set hidestuff {refs/heads/*/* refs/tags/* refs/remotes/*}

 may hide all tags, all remote-tracking branches and local branches
 that have a slash in their names.

And hide the rest. Currently gitk shows all other refs (e.g. refs/hg/*).

-- 
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


[PATCH 0/2] push: honor advice.* configuration

2012-12-02 Thread Chris Rorvick
Added a new config option to turn off the already-exists advice.  We
also want to observe the 'pushNonFastForward' setting, but the name of
this config is too narrow after this addition.  Renamed to have broader
scope while retaining the old name as an alias for backward-
compatibility.

Chris Rorvick (2):
  push: rename config variable for more general use
  push: allow already-exists advice to be disabled

 Documentation/config.txt | 10 +++---
 advice.c |  9 +++--
 advice.h |  3 ++-
 builtin/push.c   |  8 +---
 4 files changed, 21 insertions(+), 9 deletions(-)

-- 
1.8.0.1.541.g73be2da

--
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


[PATCH 1/2] push: rename config variable for more general use

2012-12-02 Thread Chris Rorvick
The 'pushNonFastForward' advice config can be used to squelch several
instances of push-related advice.  Rename it to 'pushUpdateRejected' to
cover other reject scenarios that are unrelated to fast-forwarding.
Retain the old name for compatibility.

Signed-off-by: Chris Rorvick ch...@rorvick.com
---
 Documentation/config.txt | 2 +-
 advice.c | 7 +--
 advice.h | 2 +-
 builtin/push.c   | 6 +++---
 4 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/Documentation/config.txt b/Documentation/config.txt
index 9a0544c..92903f2 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -140,7 +140,7 @@ advice.*::
can tell Git that you do not need help by setting these to 'false':
 +
 --
-   pushNonFastForward::
+   pushUpdateRejected::
Set this variable to 'false' if you want to disable
'pushNonFFCurrent', 'pushNonFFDefault', and
'pushNonFFMatching' simultaneously.
diff --git a/advice.c b/advice.c
index edfbd4a..329e077 100644
--- a/advice.c
+++ b/advice.c
@@ -1,6 +1,6 @@
 #include cache.h
 
-int advice_push_nonfastforward = 1;
+int advice_push_update_rejected = 1;
 int advice_push_non_ff_current = 1;
 int advice_push_non_ff_default = 1;
 int advice_push_non_ff_matching = 1;
@@ -14,7 +14,7 @@ static struct {
const char *name;
int *preference;
 } advice_config[] = {
-   { pushnonfastforward, advice_push_nonfastforward },
+   { pushupdaterejected, advice_push_update_rejected },
{ pushnonffcurrent, advice_push_non_ff_current },
{ pushnonffdefault, advice_push_non_ff_default },
{ pushnonffmatching, advice_push_non_ff_matching },
@@ -23,6 +23,9 @@ static struct {
{ resolveconflict, advice_resolve_conflict },
{ implicitidentity, advice_implicit_identity },
{ detachedhead, advice_detached_head },
+
+   /* make this an alias for backward compatibility */
+   { pushnonfastforward, advice_push_update_rejected }
 };
 
 void advise(const char *advice, ...)
diff --git a/advice.h b/advice.h
index f3cdbbf..c28ef8a 100644
--- a/advice.h
+++ b/advice.h
@@ -3,7 +3,7 @@
 
 #include git-compat-util.h
 
-extern int advice_push_nonfastforward;
+extern int advice_push_update_rejected;
 extern int advice_push_non_ff_current;
 extern int advice_push_non_ff_default;
 extern int advice_push_non_ff_matching;
diff --git a/builtin/push.c b/builtin/push.c
index 83a3cc8..cf5ecfa 100644
--- a/builtin/push.c
+++ b/builtin/push.c
@@ -226,21 +226,21 @@ static const char message_advice_ref_already_exists[] =
 
 static void advise_pull_before_push(void)
 {
-   if (!advice_push_non_ff_current || !advice_push_nonfastforward)
+   if (!advice_push_non_ff_current || !advice_push_update_rejected)
return;
advise(_(message_advice_pull_before_push));
 }
 
 static void advise_use_upstream(void)
 {
-   if (!advice_push_non_ff_default || !advice_push_nonfastforward)
+   if (!advice_push_non_ff_default || !advice_push_update_rejected)
return;
advise(_(message_advice_use_upstream));
 }
 
 static void advise_checkout_pull_push(void)
 {
-   if (!advice_push_non_ff_matching || !advice_push_nonfastforward)
+   if (!advice_push_non_ff_matching || !advice_push_update_rejected)
return;
advise(_(message_advice_checkout_pull_push));
 }
-- 
1.8.0.1.541.g73be2da

--
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


[PATCH 2/2] push: allow already-exists advice to be disabled

2012-12-02 Thread Chris Rorvick
Add 'advice.pushAlreadyExists' option to disable the advice shown when
an update is rejected for a reference that is not allowed to update at
all (verses those that are allowed to fast-forward.)

Signed-off-by: Chris Rorvick ch...@rorvick.com
---
 Documentation/config.txt | 8 ++--
 advice.c | 2 ++
 advice.h | 1 +
 builtin/push.c   | 2 ++
 4 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/Documentation/config.txt b/Documentation/config.txt
index 92903f2..90e7d10 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -142,8 +142,9 @@ advice.*::
 --
pushUpdateRejected::
Set this variable to 'false' if you want to disable
-   'pushNonFFCurrent', 'pushNonFFDefault', and
-   'pushNonFFMatching' simultaneously.
+   'pushNonFFCurrent', 'pushNonFFDefault',
+   'pushNonFFMatching', and 'pushAlreadyExists'
+   simultaneously.
pushNonFFCurrent::
Advice shown when linkgit:git-push[1] fails due to a
non-fast-forward update to the current branch.
@@ -158,6 +159,9 @@ advice.*::
'matching refs' explicitly (i.e. you used ':', or
specified a refspec that isn't your current branch) and
it resulted in a non-fast-forward error.
+   pushAlreadyExists::
+   Shown when linkgit:git-push[1] rejects an update that
+   does not qualify for fast-forwarding (e.g., a tag.)
statusHints::
Show directions on how to proceed from the current
state in the output of linkgit:git-status[1] and in
diff --git a/advice.c b/advice.c
index 329e077..d287927 100644
--- a/advice.c
+++ b/advice.c
@@ -4,6 +4,7 @@ int advice_push_update_rejected = 1;
 int advice_push_non_ff_current = 1;
 int advice_push_non_ff_default = 1;
 int advice_push_non_ff_matching = 1;
+int advice_push_already_exists = 1;
 int advice_status_hints = 1;
 int advice_commit_before_merge = 1;
 int advice_resolve_conflict = 1;
@@ -18,6 +19,7 @@ static struct {
{ pushnonffcurrent, advice_push_non_ff_current },
{ pushnonffdefault, advice_push_non_ff_default },
{ pushnonffmatching, advice_push_non_ff_matching },
+   { pushalreadyexists, advice_push_already_exists },
{ statushints, advice_status_hints },
{ commitbeforemerge, advice_commit_before_merge },
{ resolveconflict, advice_resolve_conflict },
diff --git a/advice.h b/advice.h
index c28ef8a..8bf6356 100644
--- a/advice.h
+++ b/advice.h
@@ -7,6 +7,7 @@ extern int advice_push_update_rejected;
 extern int advice_push_non_ff_current;
 extern int advice_push_non_ff_default;
 extern int advice_push_non_ff_matching;
+extern int advice_push_already_exists;
 extern int advice_status_hints;
 extern int advice_commit_before_merge;
 extern int advice_resolve_conflict;
diff --git a/builtin/push.c b/builtin/push.c
index cf5ecfa..8491e43 100644
--- a/builtin/push.c
+++ b/builtin/push.c
@@ -247,6 +247,8 @@ static void advise_checkout_pull_push(void)
 
 static void advise_ref_already_exists(void)
 {
+   if (!advice_push_already_exists || !advice_push_update_rejected)
+   return;
advise(_(message_advice_ref_already_exists));
 }
 
-- 
1.8.0.1.541.g73be2da

--
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: [RFC/PATCH] l10n: de.po: translate 825 new messages

2012-12-02 Thread Ralf Thielow
Thanks Thomas and Michael!

2012/11/30 Thomas Rast tr...@inf.ethz.ch:

  #: builtin/update-index.c:756
  msgid mark files as \index-only\
 -msgstr 
 +msgstr markiert Dateien als \index-only\

 Likewise, but here I don't even understand what the manpage is trying to
 tell me, in particular I don't see how it would be different from
 assume-unchanged.  Maybe see manpage would be the best documentation.

I'm not really sure what to do with it. In this version (see below) I kept
it. Did you mean we should add (siehe Hilfeseite) or something in the
translation, or does it belong to the original message and the translation
would just follow?

 +wiederholte Ausführung der Phasen #2 und #3 für die aufgelisteten Pfade

 ISTR we settled on something for 'stage', but it's not in the glossary.
 Either way I don't think this is it.  Ausführung der Phasen would mean
 that it's some part of a process, whereas the stages are a state.

I've changed it to
wiederholtes Einpflegen der Zustände #2 und #3 für die aufgelisteten Pfade
What do you think?

---
 po/de.po | 123 +++
 1 file changed, 61 insertions(+), 62 deletions(-)

diff --git a/po/de.po b/po/de.po
index 1f49610..5e14d9c 100644
--- a/po/de.po
+++ b/po/de.po
@@ -1978,7 +1978,7 @@ msgstr Pfade sind getrennt durch NUL Zeichen
 #: builtin/apply.c:4336
 msgid ensure at least n lines of context match
 msgstr 
-stellt sicher, dass mindestens Anzahl Zeilen des Kontextes übereinstimmen
+stellt sicher, dass mindestens n Zeilen des Kontextes übereinstimmen
 
 #: builtin/apply.c:4337
 msgid action
@@ -2167,7 +2167,7 @@ msgstr Unterdrückt den Namen des Autors und den 
Zeitstempel (Standard: aus)
 
 #: builtin/blame.c:2329
 msgid Show author email instead of name (Default: off)
-msgstr Zeigt anstatt des Namens die eMail-Adresse des Autors (Standard: aus)
+msgstr Zeigt anstatt des Namens die Email-Adresse des Autors (Standard: aus)
 
 #: builtin/blame.c:2330
 msgid Ignore whitespace differences
@@ -4072,7 +4072,7 @@ msgstr gibt nur exakte Übereinstimmungen aus
 
 #: builtin/describe.c:412
 msgid consider n most recent tags (default: 10)
-msgstr betrachtet die jüngsten Anzahl Markierungen (Standard: 10)
+msgstr betrachtet die jüngsten n Markierungen (Standard: 10)
 
 #: builtin/describe.c:414
 msgid only consider tags matching pattern
@@ -4143,7 +4143,7 @@ msgstr git fast-export [rev-list-opts]
 
 #: builtin/fast-export.c:635
 msgid show progress after n objects
-msgstr zeigt Fortschritt nach Anzahl Objekten an
+msgstr zeigt Fortschritt nach n Objekten an
 
 #: builtin/fast-export.c:637
 msgid select handling of signed tags
@@ -4422,7 +4422,7 @@ msgstr 
 #: builtin/fmt-merge-msg.c:13
 msgid git fmt-merge-msg [-m message] [--log[=n]|--no-log] [--file file]
 msgstr 
-git fmt-merge-msg [-m Beschreibung] [--log[=Anzahl]|--no-log] [--file 
+git fmt-merge-msg [-m Beschreibung] [--log[=n]|--no-log] [--file 
 Datei]
 
 #: builtin/fmt-merge-msg.c:653 builtin/fmt-merge-msg.c:656 builtin/grep.c:786
@@ -4433,7 +4433,7 @@ msgstr Anzahl
 
 #: builtin/fmt-merge-msg.c:654
 msgid populate log with at most n entries from shortlog
-msgstr fügt Historie mit höchstens Nummer Einträgen von \shortlog\ hinzu
+msgstr fügt Historie mit höchstens n Einträgen von \shortlog\ hinzu
 
 #: builtin/fmt-merge-msg.c:657
 msgid alias for --log (deprecated)
@@ -4457,23 +4457,23 @@ msgstr git for-each-ref [Optionen] [Muster]
 
 #: builtin/for-each-ref.c:994
 msgid quote placeholders suitably for shells
-msgstr quotiert Platzhalter geeignet für Shells
+msgstr formatiert Platzhalter als Shell-String
 
 #: builtin/for-each-ref.c:996
 msgid quote placeholders suitably for perl
-msgstr quotiert Platzhalter geeignet für Perl
+msgstr formatiert Platzhalter als Perl-String
 
 #: builtin/for-each-ref.c:998
 msgid quote placeholders suitably for python
-msgstr quotiert Platzhalter geeignet für Python
+msgstr formatiert Platzhalter als Python-String
 
 #: builtin/for-each-ref.c:1000
 msgid quote placeholders suitably for tcl
-msgstr quotiert Platzhalter geeignet für TCL
+msgstr formatiert Platzhalter als TCL-String
 
 #: builtin/for-each-ref.c:1003
 msgid show only n matched refs
-msgstr zeigt nur Nummer passende Referenzen
+msgstr zeigt nur n passende Referenzen
 
 #: builtin/for-each-ref.c:1004
 msgid format
@@ -4489,7 +4489,7 @@ msgstr Schüssel
 
 #: builtin/for-each-ref.c:1006
 msgid field name to sort on
-msgstr Name des Felder zum Sortieren
+msgstr sortiere nach diesem Feld
 
 #: builtin/fsck.c:608
 msgid git fsck [options] [object...]
@@ -4521,7 +4521,7 @@ msgstr erzeugt Kopfknoten des Referenzprotokolls 
(Standard)
 
 #: builtin/fsck.c:620
 msgid also consider packs and alternate objects
-msgstr betrachtet auch Pakete und wechselnde Objekte
+msgstr 
 
 #: builtin/fsck.c:621
 msgid enable more strict checking
@@ -4645,7 +4645,7 @@ msgstr findet Übereinstimmungen unabhängig von Groß- und 
Kleinschreibung
 
 #: builtin/grep.c:741
 msgid match patterns only at word 

[PATCH] l10n: de.po: translate 22 new messages

2012-12-02 Thread Ralf Thielow
Translate 22 new messages came from git.pot
updates in 9306b5b (l10n: Update git.pot (3 new,
6 removed messages)), fe52cd6 (l10n: Update git.pot
(14 new, 3 removed messages)) and f9472e3
(l10n: Update git.pot (5 new, 1 removed messages)).

Signed-off-by: Ralf Thielow ralf.thie...@gmail.com
---
 po/de.po | 68 ++--
 1 file changed, 36 insertions(+), 32 deletions(-)

diff --git a/po/de.po b/po/de.po
index a0bf3da..7350818 100644
--- a/po/de.po
+++ b/po/de.po
@@ -5,7 +5,7 @@
 #
 msgid 
 msgstr 
-Project-Id-Version: git 1.8.0\n
+Project-Id-Version: git 1.8.1\n
 Report-Msgid-Bugs-To: Git Mailing List git@vger.kernel.org\n
 POT-Creation-Date: 2012-11-30 12:40+0800\n
 PO-Revision-Date: 2012-10-02 19:35+0200\n
@@ -130,6 +130,8 @@ msgid 
 Negative patterns are forbidden in git attributes\n
 Use '\\!' for literal leading exclamation.
 msgstr 
+Verneinende Muster sind in Git-Attributen verboten.\n
+Benutze '\\!' für führende Ausrufezeichen.
 
 #: bundle.c:36
 #, c-format
@@ -305,22 +307,21 @@ msgstr[0] vor %lu Jahr
 msgstr[1] vor %lu Jahren
 
 #: diff.c:111
-#, fuzzy, c-format
+#, c-format
 msgid   Failed to parse dirstat cut-off percentage '%s'\n
 msgstr 
-  Fehler beim Parsen des abgeschnittenen \dirstat\ Prozentsatzes '%.*s'\n
+  Fehler beim Parsen des abgeschnittenen \dirstat\ Prozentsatzes '%s'\n
 
 #: diff.c:116
-#, fuzzy, c-format
+#, c-format
 msgid   Unknown dirstat parameter '%s'\n
-msgstr   Unbekannter \dirstat\ Parameter '%.*s'\n
+msgstr   Unbekannter \dirstat\ Parameter '%s'\n
 
 #: diff.c:194
-#, fuzzy, c-format
+#, c-format
 msgid Unknown value for 'diff.submodule' config variable: '%s'
 msgstr 
-Fehler in 'diff.dirstat' Konfigurationsvariable gefunden:\n
-%s
+Unbekannter Wert in Konfigurationsvariable 'diff.dirstat': '%s'
 
 #: diff.c:237
 #, c-format
@@ -341,11 +342,10 @@ msgstr 
 %s
 
 #: diff.c:3508
-#, fuzzy, c-format
+#,  c-format
 msgid Failed to parse --submodule option parameter: '%s'
 msgstr 
-Fehler beim Parsen des --dirstat/-X Optionsparameters:\n
-%s
+Fehler beim Parsen des --submodule Optionsparameters: '%s'
 
 #: gpg-interface.c:59
 msgid could not run gpg.
@@ -726,7 +726,7 @@ msgstr[1] Dein Zweig ist vor '%s' um %d Versionen.\n
 
 #: remote.c:1637
 msgid   (use \git push\ to publish your local commits)\n
-msgstr 
+msgstr   (benutze \git push\ um deine lokalen Versionen herauszubringen)\n
 
 #: remote.c:1640
 #, c-format
@@ -740,10 +740,9 @@ msgstr[1] 
 werden.\n
 
 #: remote.c:1647
-#, fuzzy
 msgid   (use \git pull\ to update your local branch)\n
 msgstr 
-  (benutze \git am --abort\ um den ursprünglichen Zweig wiederherzustellen)
+  (benutze \git pull\ um deinen lokalen Zweig zu aktualisieren)\n
 
 #: remote.c:1650
 #, c-format
@@ -761,10 +760,9 @@ msgstr[1] 
 und haben jeweils %d und %d unterschiedliche Versionen.\n
 
 #: remote.c:1659
-#, fuzzy
 msgid   (use \git pull\ to merge the remote branch into yours)\n
 msgstr 
-  (benutze \git am --abort\ um den ursprünglichen Zweig wiederherzustellen)
+  (benutze \git pull\ um den externen Zweig mit Deinem zusammenzuführen)\n
 
 #: sequencer.c:123 builtin/merge.c:761 builtin/merge.c:874 builtin/merge.c:984
 #: builtin/merge.c:994
@@ -2614,9 +2612,8 @@ msgid git check-attr [-a | --all | attr...] [--] 
pathname...
 msgstr git check-attr [-a | --all | Attribut...] [--] Pfadname...
 
 #: builtin/check-attr.c:12
-#, fuzzy
 msgid git check-attr --stdin [-z] [-a | --all | attr...]  list-of-paths
-msgstr git check-attr --stdin [-a | --all | Attribut...]  Liste-von-Pfaden
+msgstr git check-attr --stdin [-z] [-a | --all | Attribut...]  
Liste-von-Pfaden
 
 #: builtin/check-attr.c:19
 msgid report all attributes set on file
@@ -3596,9 +3593,8 @@ msgid Paths with -a does not make sense.
 msgstr Pfade mit -a machen keinen Sinn.
 
 #: builtin/commit.c:1067 builtin/commit.c:1202
-#, fuzzy
 msgid --long and -z are incompatible
-msgstr --column und -n sind inkompatibel
+msgstr --long und -z sind inkompatibel
 
 #: builtin/commit.c:1162 builtin/commit.c:1398
 msgid show status concisely
@@ -3613,9 +3609,8 @@ msgid machine-readable output
 msgstr maschinenlesbare Ausgabe
 
 #: builtin/commit.c:1169 builtin/commit.c:1404
-#, fuzzy
 msgid show status in long format (default)
-msgstr zeigt zwischengespeicherten Dateien in der Ausgabe an (Standard)
+msgstr zeigt Status im Langformat (Standard)
 
 #: builtin/commit.c:1172 builtin/commit.c:1407
 msgid terminate entries with NUL
@@ -4789,7 +4784,7 @@ msgstr zeigt nur Übereinstimmungen von Dateien, die 
allen Mustern entsprechen
 
 #: builtin/grep.c:736
 msgid show parse tree for grep expression
-msgstr 
+msgstr zeigt geparsten Baum für \grep\-Ausdruck
 
 #: builtin/grep.c:740
 msgid pager
@@ -8029,6 +8024,9 @@ msgid 
 submodule '%s' (or one of its nested submodules) uses a .git directory\n
 (use 'rm -rf' if you really want to remove it including all of its history)
 msgstr 
+Unterprojekt '%s' (oder ein geschachteltes Unterprojekt dessen) verwendet \n
+ein 

[PATCH] status: respect advice.statusHints for ahead/behind advice

2012-12-02 Thread Jeff King
If the user has unset advice.statusHints, we already
suppress the use git reset to... hints in each stanza. The
new use git push to publish... hint is the same type of
hint. Let's respect statusHints for it, rather than making
the user set yet another advice flag.

Signed-off-by: Jeff King p...@peff.net
---
On top of mm/status-push-pull-advise.

I left git checkout alone, though I'd also like to turn it off there,
too. Should it get a separate advice option there? Should it simply
respect statusHints (it seems odd because I know that status there
means git status, not hints about the status of your repo)?

 builtin/checkout.c |  2 +-
 remote.c   | 17 ++---
 remote.h   |  2 +-
 wt-status.c|  2 +-
 4 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/builtin/checkout.c b/builtin/checkout.c
index 781295b..28146d1 100644
--- a/builtin/checkout.c
+++ b/builtin/checkout.c
@@ -544,7 +544,7 @@ static void report_tracking(struct branch_info *new)
struct strbuf sb = STRBUF_INIT;
struct branch *branch = branch_get(new-name);
 
-   if (!format_tracking_info(branch, sb))
+   if (!format_tracking_info(branch, sb, 1))
return;
fputs(sb.buf, stdout);
strbuf_release(sb);
diff --git a/remote.c b/remote.c
index 9c19689..176a777 100644
--- a/remote.c
+++ b/remote.c
@@ -1617,7 +1617,7 @@ int stat_tracking_info(struct branch *branch, int 
*num_ours, int *num_theirs)
 /*
  * Return true when there is anything to report, otherwise false.
  */
-int format_tracking_info(struct branch *branch, struct strbuf *sb)
+int format_tracking_info(struct branch *branch, struct strbuf *sb, int advice)
 {
int num_ours, num_theirs;
const char *base;
@@ -1633,8 +1633,9 @@ int format_tracking_info(struct branch *branch, struct 
strbuf *sb)
   Your branch is ahead of '%s' by %d commits.\n,
   num_ours),
base, num_ours);
-   strbuf_addf(sb,
-   _(  (use \git push\ to publish your local 
commits)\n));
+   if (advice)
+   strbuf_addf(sb,
+   _(  (use \git push\ to publish your local 
commits)\n));
} else if (!num_ours) {
strbuf_addf(sb,
Q_(Your branch is behind '%s' by %d commit, 
@@ -1643,8 +1644,9 @@ int format_tracking_info(struct branch *branch, struct 
strbuf *sb)
   and can be fast-forwarded.\n,
   num_theirs),
base, num_theirs);
-   strbuf_addf(sb,
-   _(  (use \git pull\ to update your local 
branch)\n));
+   if (advice)
+   strbuf_addf(sb,
+   _(  (use \git pull\ to update your local 
branch)\n));
} else {
strbuf_addf(sb,
Q_(Your branch and '%s' have diverged,\n
@@ -1655,8 +1657,9 @@ int format_tracking_info(struct branch *branch, struct 
strbuf *sb)
   respectively.\n,
   num_theirs),
base, num_ours, num_theirs);
-   strbuf_addf(sb,
-   _(  (use \git pull\ to merge the remote branch into 
yours)\n));
+   if (advice)
+   strbuf_addf(sb,
+   _(  (use \git pull\ to merge the remote 
branch into yours)\n));
}
return 1;
 }
diff --git a/remote.h b/remote.h
index 251d8fd..ac504a5 100644
--- a/remote.h
+++ b/remote.h
@@ -153,7 +153,7 @@ int stat_tracking_info(struct branch *branch, int 
*num_ours, int *num_theirs);
 
 /* Reporting of tracking info */
 int stat_tracking_info(struct branch *branch, int *num_ours, int *num_theirs);
-int format_tracking_info(struct branch *branch, struct strbuf *sb);
+int format_tracking_info(struct branch *branch, struct strbuf *sb, int advice);
 
 struct ref *get_local_heads(void);
 /*
diff --git a/wt-status.c b/wt-status.c
index 2a9658b..b48c8cf 100644
--- a/wt-status.c
+++ b/wt-status.c
@@ -755,7 +755,7 @@ static void wt_status_print_tracking(struct wt_status *s)
if (prefixcmp(s-branch, refs/heads/))
return;
branch = branch_get(s-branch + 11);
-   if (!format_tracking_info(branch, sb))
+   if (!format_tracking_info(branch, sb, advice_status_hints))
return;
 
for (cp = sb.buf; (ep = strchr(cp, '\n')) != NULL; cp = ep + 1)
-- 
1.7.12.4.42.ge2b5b43
--
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


thomas sabo bracelet is absolutely some sort of acclaimed type

2012-12-02 Thread mushia322
What on earth is so extraordinary and unconventional on the subject of Thomas
Sabo appeal bracelet asshole is usually that you have got the choice to
select and opt for its possess appeal for being hooked up to your bracelet
of your decision. towards your lovers, you may also opt for the best gift
with the Thomas Sabo Charm Club for nearly all people, which include your
loved ones and good friends. Undoubtedly you might appreciate the array made
available by Sabo and so will your loved ones and good friends. Sabo is very
well regarded for its assortment of attraction, or
[url=http://www.thomassabobraceletsshop.co.uk/]thomas sabo sale[/url]. Allow
me to share with you about that exclusive matter about Thomas Sabo Bracelets
Australia. What on earth is so extraordinary and unconventional on the
subject of Thomas Sabo appeal bracelet asshole is usually that you have got
the choice to select and opt for its possess appeal for being hooked up to
your bracelet of your decision..
http://www.thomassabobraceletsshop.co.uk/ 



--
View this message in context: 
http://git.661346.n2.nabble.com/thomas-sabo-bracelet-is-absolutely-some-sort-of-acclaimed-type-tp7572551.html
Sent from the git mailing list archive at Nabble.com.
--
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


you snapshot which the magnificent pandora bracelet charms

2012-12-02 Thread shoubul659
You’ll be able to pick from any variety of this sort of patterns at different
[url=http://www.pandoracanadacharm.org/]pandora charms on sale[/url]
retailers within your location. Below, you’ll be surprised to discover a big
selection of allure beads to pick from. Regardless of whether you want gold
or silver, you’re going to get lots of beads created from these treasured
metals. You’ll be able to even pick from beads created of blend of gold and
silver. Apart from these, enamel can be being used to produce this sort of
beads. Should you not able to locate a Pandora retailer within your
location, you’ll be able to decide for checking out a web-based retailer to
examine out different alternatives..
http://www.pandoracanadacharm.org/   



--
View this message in context: 
http://git.661346.n2.nabble.com/you-snapshot-which-the-magnificent-pandora-bracelet-charms-tp7572552.html
Sent from the git mailing list archive at Nabble.com.
--
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


Anyone can go with a perles swarovski alternatively

2012-12-02 Thread weisma60
Around, forty brand new shops ought to be in position through 2001. Swarovski
offers regarding 9200 workers, and contains continued to be the for yourself
possessed loved ones company because it's beginning. I've noticed a few
rumors that they're thinking about heading public, however that's just
about all they're, simply
rumors.[url=http://www.bijouxswarovskiboutique.com/]swarovski[/url] was
founded in 1895 by Daniel Swarovski I. It has since developed into an
international entity with numerous subsidiaries and is currently in the
process of reorganizing its North American activities, as well as preparing
to increase its presence on the Internet. In addition, Swarovski is also
adding their own retail stores throughout the United States and Canada. 
http://www.bijouxswarovskiboutique.com/  



--
View this message in context: 
http://git.661346.n2.nabble.com/Anyone-can-go-with-a-perles-swarovski-alternatively-tp7572553.html
Sent from the git mailing list archive at Nabble.com.
--
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] submodule: add 'deinit' command

2012-12-02 Thread Junio C Hamano
Jens Lehmann jens.lehm...@web.de writes:

 Maybe the principle of least surprise is better followed when we
 nuke the whole section, as it might surprise the user more to have
 a setting resurrected he customized in the last life cycle of the
 submodule than seeing that after an deinit followed by an init all
 former customizations are consistently gone. So I tend to think now
 that removing the whole section would be the better solution here.

I tend to agree; I suspect that a deinit would be mostly done
either to

 (1) correct mistakes the user made during a recent init and
 perhaps sync; or

 (2) tell Git that the user has finished woing with this particular
 submodule and does not intend to use it for quite a while.

For both (1) and (2), I think it would be easier to users if we gave
them a clean slate, the same state as the one the user who never had
ran init on it would be in.  A user in situation (1) is asking for
a clean slate, and a user in situation (2) is better served if he
does not have to worry about leftover entries in $GIT_DIR/config he
has long forgotten from many months ago (during which time the way
the project uses the particular submodule may well have changed)
giving non-standard experience different from what other project
participants would get.

If there were a sane workflow where it makes sense to frequently run
deinit followed by some operation followed by init, it may be
helpful to have an option to keep the other customization.  And one
consideration when implementing that deinit --keep-customization
option might be to introduce the submodule.$name.activated boolean;
that way, the operation can keep the customized upstream URL.

In any case, it needs to be shown that such a workflow exists in the
first place to justify deinit --keep-customization.  I think the
default should be to remove the submodule.$name section.

--
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