Re: Accept-language test fails on Mac OS

2014-12-06 Thread Torsten Bögershausen
On 2014-12-06 00.01, Michael Blume wrote:
 On Fri, Dec 5, 2014 at 2:51 PM, Junio C Hamano gits...@pobox.com wrote:
 Michael Blume blume.m...@gmail.com writes:

 Test #25 'git client sends Accept-Language based on LANGUAGE, LC_ALL,
 LC_MESSAGES and LANG' in t5550 fails consistently on my mac, and has
 since the test was introduced. Test 26 and 27 ('git client sends
 Accept-Language with many preferred languages' and 'git client does
 not send Accept-Language') seem fine.

 I'm building git with NO_GETTEXT=1, which may be an issue? But in that
 case the test should probably be gated on gettext?

 I recall queuing a SQUASH??? on top of the posted patch; does these
 tests pass with it reverted?
 
 The test fails both on pu and on 7567fad which is prior to the
 SQUASH??? commit, so the squash does not seem to change anything.
pu@c83418638e0c326f:
t5550 fails here under Debian Linux,
I haven't digged further

not ok 25 - git client sends Accept-Language based on LANGUAGE, LC_ALL, 
LC_MESSAGES and LANG
#   
#   check_language ko-KR, *;q=0.1 ko_KR.UTF-8 de_DE.UTF-8 
ja_JP.UTF-8 en_US.UTF-8 
#   check_language de-DE, *;q=0.1   de_DE.UTF-8 
ja_JP.UTF-8 en_US.UTF-8 
#   check_language ja-JP, *;q=0.1 
ja_JP.UTF-8 en_US.UTF-8 
#   check_language en-US, *;q=0.1   
en_US.UTF-8
#   

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


Cannot reset a repo

2014-12-06 Thread Martin Wendt
Hi,

I am facing this problem:

  - Using git version 1.9.3 (Apple Git-50)
  - cloned a fork from GitHub to my local machine:
https://github.com/mar10/cdnjs/
  - This repo seems to be broken in some way.
At least it is not clean from the beginning and I am not able to reset
`git reset --hard` only toggles the modified file from
.../sortable to .../Sortable and back
(see attached screenshot)

Is this a known problem (with case sensitivity)? Any suggestions how to
fix it?

Thanks
Martin



Re: Cannot reset a repo

2014-12-06 Thread Torsten Bögershausen
On 2014-12-06 11.27, Martin Wendt wrote:
 Hi,
 
 I am facing this problem:
 
   - Using git version 1.9.3 (Apple Git-50)
   - cloned a fork from GitHub to my local machine:
 https://github.com/mar10/cdnjs/
   - This repo seems to be broken in some way.
 At least it is not clean from the beginning and I am not able to reset
 `git reset --hard` only toggles the modified file from
 .../sortable to .../Sortable and back
 (see attached screenshot)
 
 Is this a known problem (with case sensitivity)? 
I think so
Any suggestions how to  fix it?

Try to rename Sortable into Sortable.u:
git mv Sortable Sortable.upper
(When that does not work)
git mv sortable sortable.lower

If this is not an option, use a USB Stick, format it with HFS+ case sensitive
and clone the repo to the stick

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


How to repair a shallow clone (?)

2014-12-06 Thread Torsten Bögershausen
I share a bare repo with Sparkleshare which does an auto-synch.
Now the synch had stopped, and trying to push to the central repo
by hand gives this:



git push  origin master
fatal: protocol error: expected old/new/ref, got 'shallow 
72fb4080921221293e28a97a0e8c78d6100c5186'
fatal: The remote end hung up unexpectedly
Counting objects: 4, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (4/4), done.
error: pack-objects died of signal 13
error: failed to push some refs to x

Both machines have Git 2.0.0

Is this a known issue/problem ?

I think I started to clone the repo in a shallow way
(SparkleShare asked if I want to clone the complete history,
and I probably answered no )

Is there a way to repair this situation ?
(Except doing a complete re-clone ?)

Thanks for help
--
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


Fetching a specific commit by commit ID

2014-12-06 Thread Olivier Croquette
Hello everyone,

I am trying to fetch a commit using a commit ID instead of a reference. 
According to the documentation of git-fetch, this is not supported, but I found 
out that this is not entirely true.

If the commit is already available in the repository, I get:

$ git fetch origin 7365b1a9bd45fbf12b09381d5779b607e232a8cd
From repo1
 * branch7365b1a9bd45fbf12b09381d5779b607e232a8cd - FETCH_HEAD
$ echo $?
0

If the commit is not in the repository (but it is present in the remote of 
course), I get:
$ git fetch origin fc907b94f69b9bd710ba55b5522258b722fefb3b
$ echo $?
1


That brings up following questions/remarks:
- the documentation of git-fetch is not entirely correct, commit ids are 
partially supported, not only refs
- “git fetch origin fc907” should print an error message on STDERR specifying 
what the problem is
- more interestingly: is there any reason why git fetch should not support 
fetching by commit id? There are real world use cases where this can be very 
useful, for instance when references on the remote have been overwritten or 
deleted.

Olivier

--
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 v2] Squashed changes for multiple worktrees vs. submodules

2014-12-06 Thread Jens Lehmann

Am 05.12.2014 um 02:33 schrieb Duy Nguyen:

On Fri, Dec 5, 2014 at 3:06 AM, Jens Lehmann jens.lehm...@web.de wrote:

Wow, so the .git/config is shared between all worktrees? I
suspect you have very good reasons for that,


most of config vars are at repo-level, not worktree-level, except
maybe submodule.* and something else.


Yeah, that would have been my first guess too.

 Technically we could use

include.path to point to a non-shared file, where we store
worktree-specific config.


I like that, but am not sure how hard that would be to
implement.


but I believe
that'll make multiple work trees surprise the user from time
to time when used with submodules. Because initializing a
submodule in one worktree initializes it in all other
worktrees too (I suspect other users regard git submodule
init being a worktree local command too). And setting
submodule.name.update to none will also affect all
other worktrees. But I'd need to have separate settings for
our CI server, e.g. to checkout the sources without the
largish documentation submodule in one test job (=worktree)
while checking out the whole documentation for another job
building the setup in another worktree.

And if I understand the checkout: reject if the branch is
already checked out elsewhere thread correctly, I won't be
able to build master in two jobs at the same time?


If you do git checkout --to ... master^{}, it should run fine.


So I'd have to teach our CI-server that incantation ... and
must hope nothing else breaks because of the detached HEAD.

 I'm

still considering doing something better with the read-only refs, but
haven't found time to really think it through yet.


Hmm, what about different namespaces for the refs in the repo
borrowed from? Maybe only when it is bare? Dunno ...


Thanks. But I changed my mind about the details (now that I
know about .git/config and multiple worktrees). I think you'd
have to connect a .git directory in the submodule to the
common git dir directly, as you cannot use the core.worktree
setting (which could be different between commits due to
renames) when putting it into worktree/.git/modules. And
then you couldn't remove or rename a submodule anymore,
because that fails when it contains a .git directory.

Seems like we should put a Warning: may do unexpected things
when used with submodules (with some examples about what might
happen) in the multiple worktrees documentation. And I don't
believe anymore that teaching submodules to use the common git
dir makes that much sense after I know about the restrictions
it imposes.


I'm ok with such a warning fwiw.


I believe you'd need to prominently advertise that changing
settings in .git/config affects all worktrees anyway to avoid
surprising users (at least I didn't expect it ;-), so adding
a word or to that this also impacts submodules should suffice.

--
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 v2] Squashed changes for multiple worktrees vs. submodules

2014-12-06 Thread Jens Lehmann

Am 05.12.2014 um 07:32 schrieb Max Kirillov:

On Thu, Dec 4, 2014 at 10:06 PM, Jens Lehmann jens.lehm...@web.de wrote:

But I'd need to have separate settings for
our CI server, e.g. to checkout the sources without the
largish documentation submodule in one test job (=worktree)
while checking out the whole documentation for another job
building the setup in another worktree.


Currently I'm estimating approach when submodules which have .git
file or directory inside are updated, and those which do not have it are not.
I have added a config variable submodule.updateIgnoringConfigUrl (because
usually the submodule.name.url is what turns on the update). It looks working,
maybe I even add setting the variable when chackout --to is used.


But it's not only submodule.name.url, the list goes on with
update, fetch  ignore and then there are the global options
like diff.submodule, diff.ignoreSubmodules and some more.


And if I understand the checkout: reject if the branch is
already checked out elsewhere thread correctly, I won't be
able to build master in two jobs at the same time?


You are alerady second person complaining about it, but I don't really see
how this can be a problem. Make a branch 'master2', it's another 40 bytes.


I didn't mean to complain, I'm just explaining. And I cannot
easily make it master2, I'd have to teach Jenkins that (and
maybe that's easy and I just don't know how to do it).


So two reasons against using multiple worktrees on our CI
server to save quite some disk space :-(


My use is not to save space (working tree files often takes more than
the repository
itself), but for development, I have like 3-5 checkouts usually, which
used to be local
clones, but not having to keep synching them is really life changing.


Thanks, that explains my confusion. You want those repos to be
tightly coupled while I'm looking for completely separate repos
which just share their shared objects to reduce disk footprint.


Seems like we should put a Warning: may do unexpected things
when used with submodules (with some examples about what might
happen) in the multiple worktrees documentation. And I don't
believe anymore that teaching submodules to use the common git
dir makes that much sense after I know about the restrictions
it imposes.


btw, I thought even about making it an error to add/remove/(de)initialize
submodule not in the main working tree. But I'm afraid it would not be
considered appropriate for merging.


I think an error is too harsh here. If you know what you are
doing (and what you cannot do) I see no reason not to use
submodules together with multiple worktrees. And if you're
sharing branches it might be rather obvious that you share
submodule and other worktree settings too in the superproject.


Thanks to you and Duy for discussing this with me! I'd sum it
up like this:

*) Multiple worktrees are meant to couple separate worktrees
   with a single repository to avoid having to push and fetch
   each time to sync refs and also to not having to sync
   settings manually (with the benefit of some disk space
   savings). That's a cool feature and explains why a branch
   should be protected against being modified in different
   worktrees.

   The first level submodule settings are shared between the
   multiple worktrees; submodule objects, settings and refs
   aren't (because the .git/modules directory isn't shared).

   Looks like that would work with just what we have now, no?

   Having submodules share repos would need at least a
   per-worktree core.git setting (which could be achieved via
   worktree-specific .git/config includes).

*) I'd love to see a solution for sharing the object database
   between otherwise unrelated clones of the same project (so
   that fetching in one clone updates the objects in the common
   dir and gc cannot throw anything away used by one of the
   clones). But I'd expect a bare repository as the common one
   where we put the worktrees refs into their own namespaces.

   That's another beast (which nonetheless might be based on
   what you guys are doing here). And the worktree specific
   configuration needed here could help to share submodule
   repos for the multiple worktrees case.

Does that make sense?
--
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: bug report on update-index --assume-unchanged

2014-12-06 Thread Philip Oakley

From: Sérgio Basto ser...@serjux.com
[..]

Part of the implied question is why git commit . would notice when
when git commit -a didn't appear to. So it's unclear as to what the
user should have expected.


I agree with this sentence, this is a bug because:

git commit -a ( and -a means all ) is incoherent with git commit .
This is stupid because when I want commit part of the tree, commit
includes one file that is not included when I say to commit all .
So maybe you should fix, git commit -a to be coherent .


Ultimately this (-a vs '.' with --assume-unchanged) is not a 'bug', 
because it does as planned. However the documenation is 'wrong' or at 
least misguides many readers.


Thank you for bring it to the list's attention.
[..]


Sorry I don't have time to read all messages in thread ,
but I'm going to test git with the patch suggest in this thread , at
least, I solve my problem for some time ...

My patch, and Junio's 'squash' are to correct the documentation, and 
especially remove the line about it having an ignore capability, which 
is a promise not kept (your -a vs '.' !).


I'll be updating the documenation patch today for review, though that 
doesn't solve the wider problem of:

   - 'how to temporarily ignore changes to a tracked file'.
--
Philip 


--
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 v2] doc: make clear --assume-unchanged's user contract

2014-12-06 Thread Philip Oakley
Many users misunderstand the --assume-unchanged contract, believing
it means Git won't look at the flagged file.

Be explicit that the --assume-unchanged contract is by the user that
they will NOT change the file so that Git does not need to look (and
expend, for example, lstat(2) cycles)

Mentioning Git stops checking does not help the reader, as it is
only one possible consequence of what that assumption allows Git to
do, but

   (1) there are things other than stop checking that Git can do
   based on that assumption; and
   (2) Git is not obliged to stop checking; it merely is allowed to.

Also, this is a single flag bit, correct the plural to singular, and
the verb, accordingly.

Drop the stale and incorrect information about poor-man's ignore,
which is not what this flag bit is about at all.

Signed-off-by: Philip Oakley philipoak...@iee.org
---
 Documentation/git-update-index.txt | 18 --
 1 file changed, 8 insertions(+), 10 deletions(-)

diff --git a/Documentation/git-update-index.txt 
b/Documentation/git-update-index.txt
index e0a8702..da1ccbc 100644
--- a/Documentation/git-update-index.txt
+++ b/Documentation/git-update-index.txt
@@ -78,20 +78,18 @@ OPTIONS
 Set the execute permissions on the updated files.
 
 --[no-]assume-unchanged::
-   When these flags are specified, the object names recorded
-   for the paths are not updated.  Instead, these options
-   set and unset the assume unchanged bit for the
-   paths.  When the assume unchanged bit is on, Git stops
-   checking the working tree files for possible
-   modifications, so you need to manually unset the bit to
-   tell Git when you change the working tree file. This is
+   When this flag is specified, the object names recorded
+   for the paths are not updated.  Instead, this option
+   sets/unsets the assume unchanged bit for the
+   paths.  When the assume unchanged bit is on, the user
+   promises not to change the file and allows Git to assume
+   that the working tree file matches what is recorded in
+   the index.  If you want to change the working tree file,
+   you need to unset the bit to tell Git.  This is
sometimes helpful when working with a big project on a
filesystem that has very slow lstat(2) system call
(e.g. cifs).
 +
-This option can be also used as a coarse file-level mechanism
-to ignore uncommitted changes in tracked files (akin to what
-`.gitignore` does for untracked files).
 Git will fail (gracefully) in case it needs to modify this file
 in the index e.g. when merging in a commit;
 thus, in case the assumed-untracked file is changed upstream,
-- 
1.9.4.msysgit.0

--
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 v2] Improve --assume-unchanged in the git update-index man page

2014-12-06 Thread Philip Oakley
This version 2 patch squashes in Junio's comments ($gmane/260915) and tidies up
the commit message. Previous series at $gmane/260901.

In $gmane/260837 the --assume-unchanged flag was reported as buggy because
of a misunderstanding about what it is being promised.

This clarifies the current situation, rather than change the code as proposed
by Duy in $gmane/260865.

Philip Oakley (1):
  doc: make clear --assume-unchanged's user contract

 Documentation/git-update-index.txt | 18 --
 1 file changed, 8 insertions(+), 10 deletions(-)

-- 
1.9.4.msysgit.0

--
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: Fetching a specific commit by commit ID

2014-12-06 Thread brian m. carlson
On Sat, Dec 06, 2014 at 01:39:12PM +0100, Olivier Croquette wrote:
 That brings up following questions/remarks:
 - the documentation of git-fetch is not entirely correct, commit ids
   are partially supported, not only refs

This isn't completely true.  What you're seeing here is that git fetch
performs a negotiation to find out what each side has.  As a
consequence, if git does not need to fetch the item in question because
it already has it, git fetch succeeds.  The two sides essentially never
get to the point where they have to determine whether the behavior is
allowed.

 - more interestingly: is there any reason why git fetch should not
   support fetching by commit id? There are real world use cases where
   this can be very useful, for instance when references on the remote
   have been overwritten or deleted.

It does in some cases if the remote supports this.  See the
uploadarchive and uploadpack groups in git-config(1).  However, you can
still only access existing branches and tags.

The reason this isn't supported in the general case is because one might
want to restrict access to certain branches.  For example, an open
source project might want to embargo some security fixes that are in the
repository.  Allowing a user to specify an arbitrary ID would permit
someone to circumvent those access controls.
-- 
brian m. carlson / brian with sandals: Houston, Texas, US
+1 832 623 2791 | http://www.crustytoothpaste.net/~bmc | My opinion only
OpenPGP: RSA v4 4096b: 88AC E9B2 9196 305B A994 7552 F1BA 225C 0223 B187


signature.asc
Description: Digital signature


Re: Cannot reset a repo

2014-12-06 Thread Martin Wendt

 Am 06.12.2014 um 13:14 schrieb Torsten Bögershausen tbo...@web.de:
 
 On 2014-12-06 11.27, Martin Wendt wrote:
 Hi,
 
 I am facing this problem:
 
  - Using git version 1.9.3 (Apple Git-50)
  - cloned a fork from GitHub to my local machine:
 https://github.com/mar10/cdnjs/
  - This repo seems to be broken in some way.
At least it is not clean from the beginning and I am not able to reset
`git reset --hard` only toggles the modified file from
 .../sortable to .../Sortable and back
(see attached screenshot)
 
 Is this a known problem (with case sensitivity)? 
 I think so
 Any suggestions how to  fix it?
 
 Try to rename Sortable into Sortable.u:
 git mv Sortable Sortable.upper
 (When that does not work)
 git mv sortable sortable.lower
 
 If this is not an option, use a USB Stick, format it with HFS+ case 
 sensitive
 and clone the repo to the stick
 

Thanks for responding.
It is a fork of the 6GB cdnjs repository and I don't own the sortable lib. So 
renaming is not an option.
Also, I am working on a MacBook, which already has a case sensitive file system.

--
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: Enhancement Request: locale git option

2014-12-06 Thread Ralf Thielow
2014-12-05 16:45 GMT+01:00 Torsten Bögershausen tbo...@web.de:

 I do not know who was first, and who came later, but
 http://git-scm.com/book/de/v1/Git-Grundlagen-%C3%84nderungen-am-Repository-nachverfolgen

 uses versioniert as tracked


 LANG=de_DE.UTF-8 git status
 gives:
 nichts zum Commit vorgemerkt, aber es gibt unbeobachtete Dateien (benutzen 
 Sie git add zum Beobachten)


 Does it make sense to replace beobachten with versionieren ?


I think it makes sense. versionieren describes the concept of tracking
better than beobachten, IMO. I'll send a patch for that.

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] l10n: de.po: translate track as versionieren

2014-12-06 Thread Ralf Thielow
Suggested-by: Torsten Bögershausen tbo...@web.de
Signed-off-by: Ralf Thielow ralf.thie...@gmail.com
---
 po/de.po | 40 
 1 file changed, 20 insertions(+), 20 deletions(-)

diff --git a/po/de.po b/po/de.po
index 5a93ea8..bf11225 100644
--- a/po/de.po
+++ b/po/de.po
@@ -690,7 +690,7 @@ msgstr : vielleicht ein Verzeichnis/Datei-Konflikt?
 #: merge-recursive.c:727
 #, c-format
 msgid refusing to lose untracked file at '%s'
-msgstr verweigere, da unbeobachtete Dateien in '%s' verloren gehen würden
+msgstr verweigere, da unversionierte Dateien in '%s' verloren gehen würden
 
 #: merge-recursive.c:767
 #, c-format
@@ -1631,7 +1631,7 @@ msgstr 
 #: wt-status.c:225
 msgid   (commit or discard the untracked or modified content in submodules)
 msgstr 
-  (committen oder verwerfen Sie den unbeobachteten oder geänderten Inhalt in 
+  (committen oder verwerfen Sie den unversionierten oder geänderten Inhalt in 

 den Submodulen)
 
 #: wt-status.c:237
@@ -1716,7 +1716,7 @@ msgstr geänderter Inhalt, 
 
 #: wt-status.c:374
 msgid untracked content, 
-msgstr unbeobachteter Inhalt, 
+msgstr unversionierter Inhalt, 
 
 #: wt-status.c:391
 #, c-format
@@ -1932,7 +1932,7 @@ msgstr Initialer Commit
 
 #: wt-status.c:1356
 msgid Untracked files
-msgstr Unbeobachtete Dateien
+msgstr Unversionierte Dateien
 
 #: wt-status.c:1358
 msgid Ignored files
@@ -1945,18 +1945,18 @@ msgid 
 may speed it up, but you have to be careful not to forget to add\n
 new files yourself (see 'git help status').
 msgstr 
-Es dauerte %.2f Sekunden die unbeobachteten Dateien zu bestimmen.\n
+Es dauerte %.2f Sekunden die unversionierten Dateien zu bestimmen.\n
 'status -uno' könnte das beschleunigen, aber Sie müssen darauf achten,\n
 neue Dateien selbstständig hinzuzufügen (siehe 'git help status').
 
 #: wt-status.c:1368
 #, c-format
 msgid Untracked files not listed%s
-msgstr Unbeobachtete Dateien nicht aufgelistet%s
+msgstr Unversionierte Dateien nicht aufgelistet%s
 
 #: wt-status.c:1370
 msgid  (use -u option to show untracked files)
-msgstr  (benutzen Sie die Option -u, um unbeobachtete Dateien anzuzeigen)
+msgstr  (benutzen Sie die Option -u, um unversionierte Dateien anzuzeigen)
 
 #: wt-status.c:1376
 msgid No changes
@@ -1980,20 +1980,20 @@ msgid 
 nothing added to commit but untracked files present (use \git add\ to 
 track)\n
 msgstr 
-nichts zum Commit vorgemerkt, aber es gibt unbeobachtete Dateien (benutzen 
-Sie \git add\ zum Beobachten)\n
+nichts zum Commit vorgemerkt, aber es gibt unversionierte Dateien (benutzen 
+Sie \git add\ zum Versionieren)\n
 
 #: wt-status.c:1390
 #, c-format
 msgid nothing added to commit but untracked files present\n
-msgstr nichts zum Commit vorgemerkt, aber es gibt unbeobachtete Dateien\n
+msgstr nichts zum Commit vorgemerkt, aber es gibt unversionierte Dateien\n
 
 #: wt-status.c:1393
 #, c-format
 msgid nothing to commit (create/copy files and use \git add\ to track)\n
 msgstr 
 nichts zu committen (Erstellen/Kopieren Sie Dateien und benutzen Sie \git 
-add\ zum Beobachten)\n
+add\ zum Versionieren)\n
 
 #: wt-status.c:1396 wt-status.c:1401
 #, c-format
@@ -2004,7 +2004,7 @@ msgstr nichts zu committen\n
 #, c-format
 msgid nothing to commit (use -u to show untracked files)\n
 msgstr 
-nichts zu committen (benutzen Sie die Option -u, um unbeobachtete Dateien 
+nichts zu committen (benutzen Sie die Option -u, um unversionierte Dateien 
 anzuzeigen)\n
 
 #: wt-status.c:1403
@@ -2119,7 +2119,7 @@ msgstr das Hinzufügen andernfalls ignorierter Dateien 
erlauben
 
 #: builtin/add.c:255
 msgid update tracked files
-msgstr beobachtete Dateien aktualisieren
+msgstr versionierte Dateien aktualisieren
 
 #: builtin/add.c:256
 msgid record only the fact that the path will be added later
@@ -2128,7 +2128,7 @@ msgstr nur speichern, dass der Pfad später hinzugefügt 
werden soll
 #: builtin/add.c:257
 msgid add changes from all tracked and untracked files
 msgstr 
-Änderungen von allen beobachteten und unbeobachteten Dateien hinzufügen
+Änderungen von allen versionierten und unversionierten Dateien hinzufügen
 
 #: builtin/add.c:260
 msgid ignore paths removed in the working tree (same as --no-all)
@@ -4536,7 +4536,7 @@ msgstr Kein existierender Autor mit '%s' gefunden.
 #: builtin/commit.c:1110 builtin/commit.c:1350
 #, c-format
 msgid Invalid untracked files mode '%s'
-msgstr Ungültiger Modus '%s' für unbeobachtete Dateien
+msgstr Ungültiger Modus '%s' für unversionierte Dateien
 
 #: builtin/commit.c:1147
 msgid --long and -z are incompatible
@@ -4636,7 +4636,7 @@ msgstr Modus
 #: builtin/commit.c:1377 builtin/commit.c:1656
 msgid show untracked files, optional modes: all, normal, no. (Default: all)
 msgstr 
-nicht beobachtete Dateien anzeigen, optionale Modi: all, normal, no. 
+unversionierte Dateien anzeigen, optionale Modi: all, normal, no. 
 (Standard: all)
 
 #: builtin/commit.c:1380
@@ -4657,7 +4657,7 @@ msgstr 
 
 #: builtin/commit.c:1384
 msgid list untracked files in columns

Re: [PATCH] l10n: de.po: translate track as versionieren

2014-12-06 Thread phillip


Hi,

for my feeling Beobachten is better then Versionieren. Its more natural and 
easier to understand, but okey ;)

Phillip

On 6 December 2014 20:28:49 CET, Ralf Thielow ralf.thie...@gmail.com wrote:
Suggested-by: Torsten Bögershausen tbo...@web.de
Signed-off-by: Ralf Thielow ralf.thie...@gmail.com
---
 po/de.po | 40 
 1 file changed, 20 insertions(+), 20 deletions(-)

diff --git a/po/de.po b/po/de.po
index 5a93ea8..bf11225 100644
--- a/po/de.po
+++ b/po/de.po
@@ -690,7 +690,7 @@ msgstr : vielleicht ein
Verzeichnis/Datei-Konflikt?
 #: merge-recursive.c:727
 #, c-format
 msgid refusing to lose untracked file at '%s'
-msgstr verweigere, da unbeobachtete Dateien in '%s' verloren gehen
würden
+msgstr verweigere, da unversionierte Dateien in '%s' verloren gehen
würden
 
 #: merge-recursive.c:767
 #, c-format
@@ -1631,7 +1631,7 @@ msgstr 
 #: wt-status.c:225
msgid   (commit or discard the untracked or modified content in
submodules)
 msgstr 
-  (committen oder verwerfen Sie den unbeobachteten oder geänderten
Inhalt in 
+  (committen oder verwerfen Sie den unversionierten oder geänderten
Inhalt in 
 den Submodulen)
 
 #: wt-status.c:237
@@ -1716,7 +1716,7 @@ msgstr geänderter Inhalt, 
 
 #: wt-status.c:374
 msgid untracked content, 
-msgstr unbeobachteter Inhalt, 
+msgstr unversionierter Inhalt, 
 
 #: wt-status.c:391
 #, c-format
@@ -1932,7 +1932,7 @@ msgstr Initialer Commit
 
 #: wt-status.c:1356
 msgid Untracked files
-msgstr Unbeobachtete Dateien
+msgstr Unversionierte Dateien
 
 #: wt-status.c:1358
 msgid Ignored files
@@ -1945,18 +1945,18 @@ msgid 
 may speed it up, but you have to be careful not to forget to add\n
 new files yourself (see 'git help status').
 msgstr 
-Es dauerte %.2f Sekunden die unbeobachteten Dateien zu bestimmen.\n
+Es dauerte %.2f Sekunden die unversionierten Dateien zu bestimmen.\n
'status -uno' könnte das beschleunigen, aber Sie müssen darauf
achten,\n
 neue Dateien selbstständig hinzuzufügen (siehe 'git help status').
 
 #: wt-status.c:1368
 #, c-format
 msgid Untracked files not listed%s
-msgstr Unbeobachtete Dateien nicht aufgelistet%s
+msgstr Unversionierte Dateien nicht aufgelistet%s
 
 #: wt-status.c:1370
 msgid  (use -u option to show untracked files)
-msgstr  (benutzen Sie die Option -u, um unbeobachtete Dateien
anzuzeigen)
+msgstr  (benutzen Sie die Option -u, um unversionierte Dateien
anzuzeigen)
 
 #: wt-status.c:1376
 msgid No changes
@@ -1980,20 +1980,20 @@ msgid 
nothing added to commit but untracked files present (use \git add\
to 
 track)\n
 msgstr 
-nichts zum Commit vorgemerkt, aber es gibt unbeobachtete Dateien
(benutzen 
-Sie \git add\ zum Beobachten)\n
+nichts zum Commit vorgemerkt, aber es gibt unversionierte Dateien
(benutzen 
+Sie \git add\ zum Versionieren)\n
 
 #: wt-status.c:1390
 #, c-format
 msgid nothing added to commit but untracked files present\n
-msgstr nichts zum Commit vorgemerkt, aber es gibt unbeobachtete
Dateien\n
+msgstr nichts zum Commit vorgemerkt, aber es gibt unversionierte
Dateien\n
 
 #: wt-status.c:1393
 #, c-format
msgid nothing to commit (create/copy files and use \git add\ to
track)\n
 msgstr 
nichts zu committen (Erstellen/Kopieren Sie Dateien und benutzen Sie
\git 
-add\ zum Beobachten)\n
+add\ zum Versionieren)\n
 
 #: wt-status.c:1396 wt-status.c:1401
 #, c-format
@@ -2004,7 +2004,7 @@ msgstr nichts zu committen\n
 #, c-format
 msgid nothing to commit (use -u to show untracked files)\n
 msgstr 
-nichts zu committen (benutzen Sie die Option -u, um unbeobachtete
Dateien 
+nichts zu committen (benutzen Sie die Option -u, um unversionierte
Dateien 
 anzuzeigen)\n
 
 #: wt-status.c:1403
@@ -2119,7 +2119,7 @@ msgstr das Hinzufügen andernfalls ignorierter
Dateien erlauben
 
 #: builtin/add.c:255
 msgid update tracked files
-msgstr beobachtete Dateien aktualisieren
+msgstr versionierte Dateien aktualisieren
 
 #: builtin/add.c:256
 msgid record only the fact that the path will be added later
@@ -2128,7 +2128,7 @@ msgstr nur speichern, dass der Pfad später
hinzugefügt werden soll
 #: builtin/add.c:257
 msgid add changes from all tracked and untracked files
 msgstr 
-Änderungen von allen beobachteten und unbeobachteten Dateien
hinzufügen
+Änderungen von allen versionierten und unversionierten Dateien
hinzufügen
 
 #: builtin/add.c:260
 msgid ignore paths removed in the working tree (same as --no-all)
@@ -4536,7 +4536,7 @@ msgstr Kein existierender Autor mit '%s'
gefunden.
 #: builtin/commit.c:1110 builtin/commit.c:1350
 #, c-format
 msgid Invalid untracked files mode '%s'
-msgstr Ungültiger Modus '%s' für unbeobachtete Dateien
+msgstr Ungültiger Modus '%s' für unversionierte Dateien
 
 #: builtin/commit.c:1147
 msgid --long and -z are incompatible
@@ -4636,7 +4636,7 @@ msgstr Modus
 #: builtin/commit.c:1377 builtin/commit.c:1656
msgid show untracked files, optional modes: all, normal, no. (Default:
all)
 msgstr 
-nicht beobachtete Dateien anzeigen, optionale Modi: all, normal, no.


[PATCH v2 1/2] send-email: align RFC 2047 decoding more closely with the spec

2014-12-06 Thread Роман Донченко
More specifically:

* Add \ to the list of characters not allowed in a token (see RFC 2047
  errata).

* Share regexes between unquote_rfc2047 and is_rfc2047_quoted. Besides
  removing duplication, this also makes unquote_rfc2047 more stringent.

* Allow both q and Q to identify the encoding.

* Allow lowercase hexadecimal digits in the Q encoding.

And, more on the cosmetic side:

* Change the encoded-text regex to exclude rather than include characters,
  for clarity and consistency with token.

Signed-off-by: Роман Донченко d...@corrigendum.ru
---
 git-send-email.perl | 30 +++---
 1 file changed, 19 insertions(+), 11 deletions(-)

diff --git a/git-send-email.perl b/git-send-email.perl
index 9949db0..d461ffb 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -145,6 +145,11 @@ my $have_mail_address = eval { require Mail::Address; 1 };
 my $smtp;
 my $auth;
 
+# Regexes for RFC 2047 productions.
+my $re_token = qr/[^][()@,;:\\\/?.= \000-\037\177-\377]+/;
+my $re_encoded_text = qr/[^? \000-\037\177-\377]+/;
+my $re_encoded_word = qr/=\?($re_token)\?($re_token)\?($re_encoded_text)\?=/;
+
 # Variables we fill in automatically, or via prompting:
 my (@to,$no_to,@initial_to,@cc,$no_cc,@initial_cc,@bcclist,$no_bcc,@xh,
$initial_reply_to,$initial_subject,@files,
@@ -913,15 +918,20 @@ $time = time - scalar $#files;
 
 sub unquote_rfc2047 {
local ($_) = @_;
-   my $encoding;
-   s{=\?([^?]+)\?q\?(.*?)\?=}{
-   $encoding = $1;
-   my $e = $2;
-   $e =~ s/_/ /g;
-   $e =~ s/=([0-9A-F]{2})/chr(hex($1))/eg;
-   $e;
+   my $charset;
+   s{$re_encoded_word}{
+   $charset = $1;
+   my $encoding = $2;
+   my $text = $3;
+   if ($encoding eq 'q' || $encoding eq 'Q') {
+   $text =~ s/_/ /g;
+   $text =~ s/=([0-9A-F]{2})/chr(hex($1))/egi;
+   $text;
+   } else {
+   $; # other encodings not supported yet
+   }
}eg;
-   return wantarray ? ($_, $encoding) : $_;
+   return wantarray ? ($_, $charset) : $_;
 }
 
 sub quote_rfc2047 {
@@ -934,10 +944,8 @@ sub quote_rfc2047 {
 
 sub is_rfc2047_quoted {
my $s = shift;
-   my $token = qr/[^][()@,;:\/?.= \000-\037\177-\377]+/;
-   my $encoded_text = qr/[!-@-~]+/;
length($s) = 75 
-   $s =~ m/^(?:[[:ascii:]]*|=\?$token\?$token\?$encoded_text\?=)$/o;
+   $s =~ m/^(?:[[:ascii:]]*|$re_encoded_word)$/o;
 }
 
 sub subject_needs_rfc2047_quoting {
-- 
2.1.1

--
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 v2 2/2] send-email: handle adjacent RFC 2047-encoded words properly

2014-12-06 Thread Роман Донченко
The RFC says that they are to be concatenated after decoding (i.e. the
intervening whitespace is ignored).
---
 git-send-email.perl   | 26 --
 t/t9001-send-email.sh |  7 +++
 2 files changed, 23 insertions(+), 10 deletions(-)

diff --git a/git-send-email.perl b/git-send-email.perl
index d461ffb..7d5cc8a 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -919,17 +919,23 @@ $time = time - scalar $#files;
 sub unquote_rfc2047 {
local ($_) = @_;
my $charset;
-   s{$re_encoded_word}{
-   $charset = $1;
-   my $encoding = $2;
-   my $text = $3;
-   if ($encoding eq 'q' || $encoding eq 'Q') {
-   $text =~ s/_/ /g;
-   $text =~ s/=([0-9A-F]{2})/chr(hex($1))/egi;
-   $text;
-   } else {
-   $; # other encodings not supported yet
+   my $sep = qr/[ \t]+/;
+   s{$re_encoded_word(?:$sep$re_encoded_word)*}{
+   my @words = split $sep, $;
+   foreach (@words) {
+   m/$re_encoded_word/;
+   $charset = $1;
+   my $encoding = $2;
+   my $text = $3;
+   if ($encoding eq 'q' || $encoding eq 'Q') {
+   $_ = $text;
+   s/_/ /g;
+   s/=([0-9A-F]{2})/chr(hex($1))/egi;
+   } else {
+   # other encodings not supported yet
+   }
}
+   join '', @words;
}eg;
return wantarray ? ($_, $charset) : $_;
 }
diff --git a/t/t9001-send-email.sh b/t/t9001-send-email.sh
index 19a3ced..fa965ff 100755
--- a/t/t9001-send-email.sh
+++ b/t/t9001-send-email.sh
@@ -240,6 +240,13 @@ test_expect_success $PREREQ 'non-ascii self name is 
suppressed' 
'non_ascii_self_suppressed'
 
 
+# This name is long enough to force format-patch to split it into multiple
+# encoded-words, assuming it uses UTF-8 with the Q encoding.
+test_expect_success $PREREQ 'long non-ascii self name is suppressed' 
+   test_suppress_self_quoted 'Ƒüñníęř €. Nâṁé' 'odd_?=m...@example.com' \
+   'long_non_ascii_self_suppressed'
+
+
 test_expect_success $PREREQ 'sanitized self name is suppressed' 
test_suppress_self_unquoted '\A U. Thor\' 'aut...@example.com' \
'self_name_sanitized_suppressed'
-- 
2.1.1

--
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] l10n: de.po: translate track as versionieren

2014-12-06 Thread Ralf Thielow
Hi Phillip

Am 6. Dezember 2014 um 20:34 schrieb phillip phillip.sze...@gmail.com:


 Hi,

 for my feeling Beobachten is better then Versionieren. Its more natural and 
 easier to understand, but okey ;)


I think it's OK as Git is all about versioning content. In other cases
beobachten
might be the better choice.

Ralf
--
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: Accept-language test fails on Mac OS

2014-12-06 Thread Yi, EungJun
Could you tell me your locale information from executing 'locale'
command and the verbose message you can get by accessing any git
repository via HTTP protocol? (e.g. GIT_CURL_VERBOSE=1 git clone
http://github.com/foo/bar )

I think the failures are related with your locale information.

On Sat, Dec 6, 2014 at 6:50 PM, Torsten Bögershausen tbo...@web.de wrote:
 On 2014-12-06 00.01, Michael Blume wrote:
 On Fri, Dec 5, 2014 at 2:51 PM, Junio C Hamano gits...@pobox.com wrote:
 Michael Blume blume.m...@gmail.com writes:

 Test #25 'git client sends Accept-Language based on LANGUAGE, LC_ALL,
 LC_MESSAGES and LANG' in t5550 fails consistently on my mac, and has
 since the test was introduced. Test 26 and 27 ('git client sends
 Accept-Language with many preferred languages' and 'git client does
 not send Accept-Language') seem fine.

 I'm building git with NO_GETTEXT=1, which may be an issue? But in that
 case the test should probably be gated on gettext?

 I recall queuing a SQUASH??? on top of the posted patch; does these
 tests pass with it reverted?

 The test fails both on pu and on 7567fad which is prior to the
 SQUASH??? commit, so the squash does not seem to change anything.
 pu@c83418638e0c326f:
 t5550 fails here under Debian Linux,
 I haven't digged further

 not ok 25 - git client sends Accept-Language based on LANGUAGE, LC_ALL, 
 LC_MESSAGES and LANG
 #
 #   check_language ko-KR, *;q=0.1 ko_KR.UTF-8 de_DE.UTF-8 
 ja_JP.UTF-8 en_US.UTF-8 
 #   check_language de-DE, *;q=0.1   de_DE.UTF-8 
 ja_JP.UTF-8 en_US.UTF-8 
 #   check_language ja-JP, *;q=0.1 
 ja_JP.UTF-8 en_US.UTF-8 
 #   check_language en-US, *;q=0.1 
   en_US.UTF-8
 #

--
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: Accept-language test fails on Mac OS

2014-12-06 Thread Torsten Bögershausen
On 2014-12-06 20.44, Yi, EungJun wrote:
 Could you tell me your locale information from executing 'locale'
 command and the verbose message you can get by accessing any git
 repository via HTTP protocol? (e.g. GIT_CURL_VERBOSE=1 git clone
 http://github.com/foo/bar )
locale -a
C
C.UTF-8
en_US.utf8
icelandic
is_IS
is_IS.iso88591
is_IS.utf8
POSIX

-
After patching like this:
diff --git a/t/t5550-http-fetch-dumb.sh b/t/t5550-http-fetch-dumb.sh
index fc6e7fc..1e42b42 100755
--- a/t/t5550-http-fetch-dumb.sh
+++ b/t/t5550-http-fetch-dumb.sh
@@ -205,8 +205,8 @@ check_language () {
LANG=$5 \
git ls-remote $HTTPD_URL/dumb/repo.git 21 |
tr -d '\015' |
-   sort -u stderr 
-   grep -i ^Accept-Language: stderr actual 
+   sort -u stderr
+   grep -i ^Accept-Language: stderr actual
test_cmp expect actual
 }
---
I get this:


expecting success: 
check_language ko-KR, *;q=0.1 ko_KR.UTF-8 de_DE.UTF-8 ja_JP.UTF-8 
en_US.UTF-8 
check_language de-DE, *;q=0.1   de_DE.UTF-8 ja_JP.UTF-8 
en_US.UTF-8 
check_language ja-JP, *;q=0.1 ja_JP.UTF-8 
en_US.UTF-8 
check_language en-US, *;q=0.1   
en_US.UTF-8

--- expect  2014-12-06 21:00:59.0 +
+++ actual  2014-12-06 21:00:59.0 +
@@ -1 +0,0 @@
-Accept-Language: de-DE, *;q=0.1
not ok 25 - git client sends Accept-Language based on LANGUAGE, LC_ALL, 
LC_MESSAGES and LANG
#   
#   check_language ko-KR, *;q=0.1 ko_KR.UTF-8 de_DE.UTF-8 
ja_JP.UTF-8 en_US.UTF-8 
#   check_language de-DE, *;q=0.1   de_DE.UTF-8 
ja_JP.UTF-8 en_US.UTF-8 
#   check_language ja-JP, *;q=0.1 
ja_JP.UTF-8 en_US.UTF-8 
#   check_language en-US, *;q=0.1   
en_US.UTF-8
#   


--
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] git-svn: propset support v2

2014-12-06 Thread Alfred Perlstein
I have incorporated Eric Wong's feedback into the git-svn propset support patch.

Issues resolved:
1) Test-case written.
2) Remove dead code.
3) Use shorter vars for formatting.
4) Fix bool comparisons.
5) Check for filesystem errors on write to .gitattribute file.
6) Use command_output_pipe() instead of open my $fh, '-|', ...
7) Refactor check for existing props.

There is a nit that I want to point out.  The code does not support adding props
unless there are also content changes to the files as well.  You can see this in
the testcase.

That is still sufficient for many people's workflows (FreeBSD at
least).  So I am wondering if this is OK. 

I would gladly take any pointers to making it work with unchanged
files either for a later diff or to wrap this up.

Thank you.

Alfred Perlstein (1):
  git-svn: Support for git-svn propset

 git-svn.perl   | 49 +++-
 perl/Git/SVN/Editor.pm | 43 
 t/t9148-git-svn-propset.sh | 71 ++
 3 files changed, 162 insertions(+), 1 deletion(-)
 create mode 100755 t/t9148-git-svn-propset.sh

-- 
2.1.2

--
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] git-svn: Support for git-svn propset

2014-12-06 Thread Alfred Perlstein
This change allows git-svn to support setting subversion properties.

Very useful for manually setting properties when committing to a
subversion repo that *requires* properties to be set without requiring
moving your changeset to separate subversion checkout in order to
set props.

This change is initially from David Fraser davidf () sjsoft ! com
Appearing here:
  http://marc.info/?l=gitm=125259772625008w=2

They are now forward ported to most recent git along with fixes to
deal with files in subdirectories.

Style and functional changes from Eric Wong have been taken
in thier entirety from:
  http://marc.info/?l=gitm=141742735608544w=2

Reviewed-by: Eric Wong normalper...@yhbt.net
Signed-off-by: Alfred Perlstein alf...@freebsd.org
Signed-off-by: David Fraser dav...@sjsoft.com
---
 git-svn.perl   | 49 +++-
 perl/Git/SVN/Editor.pm | 43 
 t/t9148-git-svn-propset.sh | 71 ++
 3 files changed, 162 insertions(+), 1 deletion(-)
 create mode 100755 t/t9148-git-svn-propset.sh

diff --git a/git-svn.perl b/git-svn.perl
index b6e2186..5cdbf39 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -115,7 +115,7 @@ my ($_stdin, $_help, $_edit,
$_before, $_after,
$_merge, $_strategy, $_preserve_merges, $_dry_run, $_parents, $_local,
$_prefix, $_no_checkout, $_url, $_verbose,
-   $_commit_url, $_tag, $_merge_info, $_interactive);
+   $_commit_url, $_tag, $_merge_info, $_interactive, $_set_svn_props);
 
 # This is a refactoring artifact so Git::SVN can get at this git-svn switch.
 sub opt_prefix { return $_prefix || '' }
@@ -193,6 +193,7 @@ my %cmd = (
  'dry-run|n' = \$_dry_run,
  'fetch-all|all' = \$_fetch_all,
  'commit-url=s' = \$_commit_url,
+ 'set-svn-props=s' = \$_set_svn_props,
  'revision|r=i' = \$_revision,
  'no-rebase' = \$_no_rebase,
  'mergeinfo=s' = \$_merge_info,
@@ -228,6 +229,9 @@ my %cmd = (
 'propget' = [ \cmd_propget,
   'Print the value of a property on a file or directory',
   { 'revision|r=i' = \$_revision } ],
+'propset' = [ \cmd_propset,
+  'Set the value of a property on a file or directory - 
will be set on commit',
+  {} ],
 'proplist' = [ \cmd_proplist,
   'List all properties of a file or directory',
   { 'revision|r=i' = \$_revision } ],
@@ -1376,6 +1380,49 @@ sub cmd_propget {
print $props-{$prop} . \n;
 }
 
+# cmd_propset (PROPNAME, PROPVAL, PATH)
+# 
+# Adjust the SVN property PROPNAME to PROPVAL for PATH.
+sub cmd_propset {
+   my ($propname, $propval, $path) = @_;
+   $path = '.' if not defined $path;
+   $path = $cmd_dir_prefix . $path;
+   usage(1) if not defined $propname;
+   usage(1) if not defined $propval;
+   my $file = basename($path);
+   my $dn = dirname($path);
+   my $cur_props = Git::SVN::Editor::check_attr( svn-properties, $path );
+   my $new_props = ;
+   if ($cur_props eq unset || $cur_props eq  || $cur_props eq set) {
+   $new_props = $propname=$propval;
+   } else {
+   # TODO: handle combining properties better
+   my @props = split(/;/, $cur_props);
+   my $replaced_prop;
+   foreach my $prop (@props) {
+   # Parse 'name=value' syntax and set the property.
+   if ($prop =~ /([^=]+)=(.*)/) {
+   my ($n,$v) = ($1,$2);
+   if ($n eq $propname)
+   {
+   $v = $propval;
+   $replaced_prop = 1;
+   }
+   if ($new_props eq ) { $new_props=$n=$v; }
+   else { $new_props=$new_props;$n=$v; }
+   }
+   }
+   if (!$replaced_prop) {
+   $new_props = $new_props;$propname=$propval;
+   }
+   }
+   my $attrfile = $dn/.gitattributes;
+   open my $attrfh, '', $attrfile or die Can't open $attrfile: $!\n;
+   # TODO: don't simply append here if $file already has svn-properties
+   print $attrfh $file svn-properties=$new_props\n or die write to 
$attrfile;
+   close $attrfh or die close $attrfile;
+}
+
 # cmd_proplist (PATH)
 # ---
 # Print the list of SVN properties for PATH.
diff --git a/perl/Git/SVN/Editor.pm b/perl/Git/SVN/Editor.pm
index 34e8af9..dd15318 100644
--- a/perl/Git/SVN/Editor.pm
+++ b/perl/Git/SVN/Editor.pm
@@ -288,6 +288,45 @@ sub apply_autoprops {
}
 }
 
+sub check_attr
+{
+   my 

Re: How to repair a shallow clone (?)

2014-12-06 Thread Trần Ngọc Quân
On 06/12/2014 19:23, Torsten Bögershausen wrote:
 I think I started to clone the repo in a shallow way
 (SparkleShare asked if I want to clone the complete history,
 and I probably answered no )

 Is there a way to repair this situation ?
 (Except doing a complete re-clone ?)

I think git don't accept push from shallow repo. I've ever encounter
this problem. I UNshallow it, then every thing will work:

$ git fetch --unshallow origin

This command will convert a shallow repository to a complete one.
See git-fetch(1) and git-clone(1).

I hope it helpful!
Thanks,

-- 
Trần Ngọc Quân.

--
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: FW: [cygwin] Cygwin's git says error: failed to read delta-pack base object

2014-12-06 Thread Jason Pyeron
TLDR = Cygwin remote filesystem sometimes has strange failures - workaround is 
to use rename, not link/unlink; 
see 
https://github.com/pdinc-oss/git/commit/5a36824ed01d4335148ca3846e75cc99c11650e2
 -Original Message-
 From: Jason Pyeron
 Sent: Friday, December 05, 2014 10:30
 
  -Original Message-
  From: Jason Pyeron
  Sent: Thursday, December 04, 2014 16:34
  
   -Original Message-
   From: brian m. carlson
   Sent: Wednesday, December 03, 2014 19:55
   
   On Wed, Dec 03, 2014 at 06:31:18PM -0500, Jason Pyeron wrote:
I remember hitting this a while ago, but just gave up.

It seems to be a problem for others too.

Any ideas on how to debug this so it can be patched?

-Original Message-
From: Dave Lindbergh
Sent: Wednesday, December 03, 2014 18:07
To: cygwin

Aha - you're right.

It works fine on a local NTFS volume.

I get the error when I do it on Z:, which is mapped to a 
   network drive
(on another Windows box).

Is there a workaround? Why does this happen?

I have a really hacky workaround, commit 
5a36824ed01d4335148ca3846e75cc99c11650e2 comments out the logic and forces a 
rename instead of link and unlink.

https://github.com/pdinc-oss/git/tree/cygwin-issue-remoteCIFS-rename

snip/

 Pseudo code and observations
 ./sha1_file.c:write_loose_object(sha1)
 {
  filename=sha1_file_name(sha1)
  (fd,tmp_file)=create_tmpfile(filename)
  write_buffer(fd)
  close_sha1_file(fd)
  return move_temp_to_file(tmp_file, filename)
 }
 
 move_temp_to_file(tmpfile, filename)
 {
  // I am thinking about forcing renames to see if the problem 
 exists then as well
  // if that works then a per repo config option allowing 
 for forced renames
  if (OBJECT_CREATION_USES_RENAMES) goto try_rename
  else if link(tmpfile,filename)
 

Dave has tested a build I made for him on 64 bit Cygwin and it works. I no 
longer have access to the environment I was having this problem in last 
February. I will try to investigate this further, but I am not hopeful, maybe 
Corinna will have luck on the issue. But I was in a secure corporate 
environment and I thought the host based security system (AV), coupled with the 
remote file system was causing the problem, namely files created are not 
available instantly.

I do think that we should have a config option for this, as most users who 
could encounter such a problem are not likely to be able (or allowed) to 
rebuild the git executable themselves.

snip/

  -Original Message-
  From: Corinna Vinschen
  Sent: Friday, December 05, 2014 6:35
  To: cyg...@cygwin.com
 snip/
  What I found in the strace is this:
  
  - Create file Z:\pic32mx-bmf\.git\objects\30\tmp_obj_YljwNZ
  
  - open file, write something, close file.
  
  - link (Z:\pic32mx-bmf\.git\objects\30\tmp_obj_YljwNZ,
  
  
 Z:\pic32mx-bmf\.git\objects\30\0bdeb2fd209d24afb865584da10b78aa8fefc4)
succeeds.
  
  - unlink (Z:\pic32mx-bmf\.git\objects\30\tmp_obj_YljwNZ) succeeds
  
  - Trying to open

  
 Z:\pic32mx-bmf\.git\objects\30\0bdeb2fd209d24afb865584da10b78aa8fefc4
but the file doesn't exist and NtCreateFile fails with status
0xC034, STATUS_OBJECT_NAME_NOT_FOUND -- ENOENT.
  
  - Subsequent unlink (Z:\pic32mx-bmf\.git\objects\30) fails with a
STATUS_DIRECTORY_NOT_EMPTY -- ENOTEMPTY.
  
  - git seems to be prepared for such a case, the parent process calls
opendir/readdir on the directory.  Enumerating the files in
Z:\pic32mx-bmf\.git\objects\30 shows the entries ., .. and
0bdeb2fd209d24afb865584da10b78aa8fefc4.
  
  - Then git calls lstat on the file, which results in NtOpenFile
returning status STATUS_OBJECT_NAME_NOT_FOUND again.
  
  - From a POSIX POV this means somebody else deleted the file,
so the dir is empty now.  Git tries to delete the directory again,
which again results in STATUS_DIRECTORY_NOT_EMPTY -- ENOTEMPTY
and, internally, a sharing violation which disallows to move the
directory out of the way.
  
  This looks suspiciously like a bug in the remote filesystem.  Link
  succeeded, so there are two links to the same file in the directory.
  Unlinking link 1 succeeds, so there's still one link to the 
  file in the
  directory, but link 2 is inaccessible as if the file has 
 been deleted
  completely.  Thus, a full POSIX git on this drive is broken.
  
  Can you please run
  
/usr/lib/csih/getVolInfo /cygdrive/z
  
  and paste the output here?  Maybe I can workaround this in the next
  Cygwin version.

Dave's response: https://www.cygwin.com/ml/cygwin/2014-12/msg00066.html

--
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-   -
- Jason Pyeron  PD Inc. http://www.pdinc.us -
- Principal Consultant  10 West 24th Street #100-
- +1 (443) 269-1555 x333Baltimore, Maryland 21218   -
-  

Re: [PATCH] introduce git root

2014-12-06 Thread Christian Couder
On Fri, Dec 5, 2014 at 10:27 AM, Jeff King p...@peff.net wrote:
 On Fri, Dec 05, 2014 at 03:27:17AM +0100, Christian Couder wrote:

  I do not think git var --exec-path is a good idea, nor GIT_EXEC_PATH
  for the environment-variable confusion you mentioned. I was thinking of
  just creating a new namespace, like:
 
git var exec-path
git var author-ident

 I agree that this is nice, but I wonder what we would do for the
 sequence editor and the default editor.
 Maybe:

 git var sequence-editor
 git var editor

 Again, I think we're mostly agreeing. Context and hierarchy and falling
 back are good things. Whatever we call the variables, editor and
 sequence-editor and foo-editor should have a predictable and
 consistent form. I like the idea of foo-editor automatically falling
 back to editor even if we don't know what foo is.

Yeah but that means that we have to use something other than - to
separate the context from the name, because we already have names like
exec-path, html-path and man-path.

 But the one place I do not agree is:

 I think sequence.editor and core.editor are better because:

 - they use the same syntax as the config variables, so they are easier
 to remember and to discover, and

 I really don't like using core.editor here, because it has the same
 name as a config variable, but it is _not_ the config variable. It
 happens to use the config variable as one of the inputs to its
 computation, but in many cases:

   git config core.editor

 and

   git var core.editor

 will produce different values.

Yeah, but I don't think it is a problem. They are different commands,
so it can be expected that they do different things.

For example, if you use git log origin/master you get a different
ouput than if you use git show origin/master, though you still use
the same origin/master notation.

When you use git show you consider only the commit pointed to by
origin/master and when you use git log you consider the same commit
but also all its ancestors.

In the same way, when you use git config core.editor you consider
only the value of the core.editor logical variable in the config
files, while when you would use git var core.editor you would
consider the value of the core.editor logical variable in both the
config files and the environment variables.

 They are entirely different namespaces.
 Using the same syntax and name seems unnecessarily confusing to me. Even
 still using dotted hierarchies, but giving them different names (e.g.,
 editor, editor.sequence, editor.foo) would make it more obvious
 that they are not the same thing.

Using yet another namespace or syntax when we could reuse an existing
one is what would seem unnecessarily confusing to me.
The value of the editor logical variable in the sequence context
is related to the sequence.editor logical value in the config file,
because the later can directly influence the former. So there is a
reason to use the same notation.

Best,
Christian.
--
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] git-svn: Support for git-svn propset

2014-12-06 Thread Eric Wong
Alfred Perlstein alf...@freebsd.org wrote:
 This change allows git-svn to support setting subversion properties.
 
 Very useful for manually setting properties when committing to a
 subversion repo that *requires* properties to be set without requiring
 moving your changeset to separate subversion checkout in order to
 set props.
 
 This change is initially from David Fraser davidf () sjsoft ! com

No point to obfuscate email addresses in commit messages (especially
it's also in the Signed-off-by :).

 Appearing here:
   http://marc.info/?l=gitm=125259772625008w=2
 
 They are now forward ported to most recent git along with fixes to
 deal with files in subdirectories.
 
 Style and functional changes from Eric Wong have been taken
 in thier entirety from:

s/thier/their/

   http://marc.info/?l=gitm=141742735608544w=2

Fwiw, I prefer equivalent mid.gmane.org links since the message-ID
remains useful if the web server ever goes away. e.g.:

  http://mid.gmane.org/20141201094911.ga13...@dcvr.yhbt.net

 Reviewed-by: Eric Wong normalper...@yhbt.net
 Signed-off-by: Alfred Perlstein alf...@freebsd.org
 Signed-off-by: David Fraser dav...@sjsoft.com

I'd like to squash in the following changes (in order of importance):

- use  to chain commands throughout tests
- use svn_cmd wrapper throughout tests
- show $! in die messages
- favor $(...) over `...` in tests
- make new_props an array simplify building the final list
- wrap long comments (help output still needs fixing)
- remove unnecessary FIXME comment

No need to resend if you're OK with these things.  Thanks again.

diff --git a/git-svn.perl b/git-svn.perl
index 5cdbf39..ec5cee4 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -1392,9 +1392,9 @@ sub cmd_propset {
my $file = basename($path);
my $dn = dirname($path);
my $cur_props = Git::SVN::Editor::check_attr( svn-properties, $path );
-   my $new_props = ;
+   my @new_props;
if ($cur_props eq unset || $cur_props eq  || $cur_props eq set) {
-   $new_props = $propname=$propval;
+   push @new_props, $propname=$propval;
} else {
# TODO: handle combining properties better
my @props = split(/;/, $cur_props);
@@ -1403,24 +1403,24 @@ sub cmd_propset {
# Parse 'name=value' syntax and set the property.
if ($prop =~ /([^=]+)=(.*)/) {
my ($n,$v) = ($1,$2);
-   if ($n eq $propname)
-   {
+   if ($n eq $propname) {
$v = $propval;
$replaced_prop = 1;
}
-   if ($new_props eq ) { $new_props=$n=$v; }
-   else { $new_props=$new_props;$n=$v; }
+   push @new_props, $n=$v;
}
}
if (!$replaced_prop) {
-   $new_props = $new_props;$propname=$propval;
+   push @new_props, $propname=$propval;
}
}
my $attrfile = $dn/.gitattributes;
open my $attrfh, '', $attrfile or die Can't open $attrfile: $!\n;
# TODO: don't simply append here if $file already has svn-properties
-   print $attrfh $file svn-properties=$new_props\n or die write to 
$attrfile;
-   close $attrfh or die close $attrfile;
+   my $new_props = join(';', @new_props);
+   print $attrfh $file svn-properties=$new_props\n or
+   die write to $attrfile: $!\n;
+   close $attrfh or die close $attrfile: $!\n;
 }
 
 # cmd_proplist (PATH)
diff --git a/perl/Git/SVN/Editor.pm b/perl/Git/SVN/Editor.pm
index dd15318..8bed2d9 100644
--- a/perl/Git/SVN/Editor.pm
+++ b/perl/Git/SVN/Editor.pm
@@ -288,8 +288,7 @@ sub apply_autoprops {
}
 }
 
-sub check_attr
-{
+sub check_attr {
my ($attr,$path) = @_;
my $fh = command_output_pipe(check-attr, $attr, --, $path);
return undef if (!$fh);
@@ -306,10 +305,12 @@ sub apply_manualprops {
if ($pending_properties eq ) { return; }
# Parse the list of properties to set.
my @props = split(/;/, $pending_properties);
-   # TODO: get existing properties to compare to - this fails for add so 
currently not done
+   # TODO: get existing properties to compare to
+   # - this fails for add so currently not done
# my $existing_props = ::get_svnprops($file);
my $existing_props = {};
-   # TODO: caching svn properties or storing them in .gitattributes would 
make that faster
+   # TODO: caching svn properties or storing them in .gitattributes
+   # would make that faster
foreach my $prop (@props) {
# Parse 'name=value' syntax and set the property.
if ($prop =~ /([^=]+)=(.*)/) {
@@ -317,8 +318,6 @@ sub 

Re: [PATCH] git-svn: Support for git-svn propset

2014-12-06 Thread Torsten Bögershausen

 diff --git a/t/t9148-git-svn-propset.sh b/t/t9148-git-svn-propset.sh
 new file mode 100755
 index 000..b36a8a2
 --- /dev/null
 +++ b/t/t9148-git-svn-propset.sh
 @@ -0,0 +1,71 @@
 +#!/bin/sh
 +#
 +# Copyright (c) 2014 Alfred Perlstein
 +#
 +
 +test_description='git svn propset tests'
 +
 +. ./lib-git-svn.sh
 +
 +foo_subdir2=subdir/subdir2/foo_subdir2
 +
In case something goes wrong (for whatever reason):
do we need a  chain here ?
 +mkdir import
 +(cd import
 + mkdir subdir
 + mkdir subdir/subdir2
 + touch foo   # for 'add props top level'
touch foo can be written shorter:
foo

 + touch subdir/foo_subdir # for 'add props relative'
 + touch $foo_subdir2# for 'add props subdir'
 + svn_cmd import -m 'import for git svn' . $svnrepo /dev/null
 +)
 +rm -rf import
 +

 +test_expect_success 'initialize git svn' 'git svn init $svnrepo'
 +test_expect_success 'fetch revisions from svn' 'git svn fetch'
This may look a little bit strange, 2 times test_expect_success in a row,
is the indentention OK ?
 +
 +# There is a bogus feature about svn propset which means that it will only
 +# be taken as a delta for svn dcommit iff the file is also modified.
 +# That is fine for now.
there is a bogus feature ?
Small typo: s/iff/if/
How about this:
#The current implementation has a restriction:
#svn propset will be taken as a delta for svn dcommit only
#if the file content is also modified

 +test_expect_success 'add props top level' '
 + git svn propset svn:keywords FreeBSD=%H foo 
 + echo hello  foo 
 + git commit -m testing propset foo 
 + git svn dcommit
 + svn_cmd co $svnrepo svn_project 
 + (cd svn_project  test `svn propget svn:keywords foo` = 
 FreeBSD=%H) 
 + rm -rf svn_project
 + '
Is there a reason why there is no  after git svn dcommit ?
If yes, it could be better to make this really clear to the readers and write
(This idea is stolen from Peff)

{ git svn dcommit || true } 

 +
 +test_expect_success 'add multiple props' '
 + git svn propset svn:keywords FreeBSD=%H foo 
 + git svn propset fbsd:nokeywords yes foo 
 + echo hello  foo 
 + git commit -m testing propset foo 
 + git svn dcommit
 + svn_cmd co $svnrepo svn_project 
 + (cd svn_project  test `svn propget svn:keywords foo` = 
 FreeBSD=%H) 
 + (cd svn_project  test `svn propget fbsd:nokeywords foo` = yes) 
 + (cd svn_project  test `svn proplist -q foo | wc -l` -eq 2) 
 + rm -rf svn_project
 + '
 +
Ah, another small thing:
the wc -l will not work under Mac OS X.
Please see test_line_count() in t/test-lib-functions.sh

And thanks for improving Git

--
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 v2] Squashed changes for multiple worktrees vs. submodules

2014-12-06 Thread Max Kirillov
On Sat, Dec 06, 2014 at 02:06:08PM +0100, Jens Lehmann wrote:
 Am 05.12.2014 um 07:32 schrieb Max Kirillov:
 Currently I'm estimating approach when submodules which have .git
 file or directory inside are updated, and those which do not have it are not.
 I have added a config variable submodule.updateIgnoringConfigUrl (because
 usually the submodule.name.url is what turns on the update). It looks 
 working,
 maybe I even add setting the variable when chackout --to is used.

 But it's not only submodule.name.url, the list goes on with
 update, fetch  ignore and then there are the global options
 like diff.submodule, diff.ignoreSubmodules and some more.

I believe that parameters are important for some use, but I
know several tesns of git users who have no idea bout them,
and I myself only learned about them while working on this.

To have some a submodule not initialized in some sorktree is
what I really need. I was sure before it is managed by
having the submodule checked out. Probably I just did not
run `submodule update` in the worktree where did not use
submodules, but I cannot rely on it.  I see now from
211b7f19c7 that adding parameter for all updates will break
the initalization. Maybe it would be better to have a
runtime argument: `git submodule update --ignore-config-url`

 Thanks to you and Duy for discussing this with me! I'd sum it
 up like this:
 
 *) Multiple worktrees are meant to couple separate worktrees
with a single repository to avoid having to push and fetch
each time to sync refs and also to not having to sync
settings manually (with the benefit of some disk space
savings). That's a cool feature and explains why a branch
should be protected against being modified in different
worktrees.

I should notify that I am not the author of the feature,
maybe Duy have some other vision.

The first level submodule settings are shared between the
multiple worktrees; submodule objects, settings and refs
aren't (because the .git/modules directory isn't shared).
 
Looks like that would work with just what we have now, no?

Yes, very much like what I proposed in $gmane/258173, but I
need to have something about preventing checkout. And I
should review what I've done since that, maybe there are
more things to fix.

 *) I'd love to see a solution for sharing the object database
between otherwise unrelated clones of the same project (so
that fetching in one clone updates the objects in the common
dir and gc cannot throw anything away used by one of the
clones). But I'd expect a bare repository as the common one
where we put the worktrees refs into their own namespaces.

There is a GIT_NAMESPACE already, maybe it should be just
extended to work with all commands?

btw, have you tried alternates? It does reduce the number of
objects you need to keep very strongly. You can put in the
alternate store only released branches which are guaranteed
to be not force-updated, to avoid issues with missing
objects, and it still helps. For example, the full git
repository takes about 70mb, and if I put master to
alternate store, the rest takes 7mb, and even if I clone all
original repository, debian repository and msysgit
repository, thay all take 15mb. It's without worktree, which
takes 27mb :)

-- 
Max
--
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: Accept-language test fails on Mac OS

2014-12-06 Thread Yi, EungJun
Thank you for providing useful information to fix the failures.

On Sun, Dec 7, 2014 at 6:04 AM, Torsten Bögershausen tbo...@web.de wrote:
 On 2014-12-06 20.44, Yi, EungJun wrote:
 Could you tell me your locale information from executing 'locale'
 command and the verbose message you can get by accessing any git
 repository via HTTP protocol? (e.g. GIT_CURL_VERBOSE=1 git clone
 http://github.com/foo/bar )
 locale -a
 C
 C.UTF-8
 en_US.utf8
 icelandic
 is_IS
 is_IS.iso88591
 is_IS.utf8
 POSIX

I'm sorry for bothering you, but could you tell me the result of
locale command without -a option? What I want to know is locale
environment variables and its values, so I want to reproduce the test
failures on my laptop.


 -
 After patching like this:
 diff --git a/t/t5550-http-fetch-dumb.sh b/t/t5550-http-fetch-dumb.sh
 index fc6e7fc..1e42b42 100755
 --- a/t/t5550-http-fetch-dumb.sh
 +++ b/t/t5550-http-fetch-dumb.sh
 @@ -205,8 +205,8 @@ check_language () {
 LANG=$5 \
 git ls-remote $HTTPD_URL/dumb/repo.git 21 |
 tr -d '\015' |
 -   sort -u stderr 
 -   grep -i ^Accept-Language: stderr actual 
 +   sort -u stderr
 +   grep -i ^Accept-Language: stderr actual
 test_cmp expect actual
  }
 ---
 I get this:


 expecting success:
 check_language ko-KR, *;q=0.1 ko_KR.UTF-8 de_DE.UTF-8 ja_JP.UTF-8 
 en_US.UTF-8 
 check_language de-DE, *;q=0.1   de_DE.UTF-8 ja_JP.UTF-8 
 en_US.UTF-8 
 check_language ja-JP, *;q=0.1 ja_JP.UTF-8 
 en_US.UTF-8 
 check_language en-US, *;q=0.1   
 en_US.UTF-8

 --- expect  2014-12-06 21:00:59.0 +
 +++ actual  2014-12-06 21:00:59.0 +
 @@ -1 +0,0 @@
 -Accept-Language: de-DE, *;q=0.1
 not ok 25 - git client sends Accept-Language based on LANGUAGE, LC_ALL, 
 LC_MESSAGES and LANG
 #
 #   check_language ko-KR, *;q=0.1 ko_KR.UTF-8 de_DE.UTF-8 
 ja_JP.UTF-8 en_US.UTF-8 
 #   check_language de-DE, *;q=0.1   de_DE.UTF-8 
 ja_JP.UTF-8 en_US.UTF-8 
 #   check_language ja-JP, *;q=0.1 
 ja_JP.UTF-8 en_US.UTF-8 
 #   check_language en-US, *;q=0.1 
   en_US.UTF-8
 #



The test seems to fail if LANGUAGE=. I will dig it. 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: Accept-language test fails on Mac OS

2014-12-06 Thread Jeff King
On Sat, Dec 06, 2014 at 10:04:06PM +0100, Torsten Bögershausen wrote:

 I get this:
 
 
 expecting success: 
 check_language ko-KR, *;q=0.1 ko_KR.UTF-8 de_DE.UTF-8 ja_JP.UTF-8 
 en_US.UTF-8 
 check_language de-DE, *;q=0.1   de_DE.UTF-8 ja_JP.UTF-8 
 en_US.UTF-8 
 check_language ja-JP, *;q=0.1 ja_JP.UTF-8 
 en_US.UTF-8 
 check_language en-US, *;q=0.1   
 en_US.UTF-8
 
 --- expect  2014-12-06 21:00:59.0 +
 +++ actual  2014-12-06 21:00:59.0 +
 @@ -1 +0,0 @@
 -Accept-Language: de-DE, *;q=0.1
 not ok 25 - git client sends Accept-Language based on LANGUAGE, LC_ALL, 
 LC_MESSAGES and LANG

I can reproduce the same problem here (Debian unstable). I actually ran
into three issues (aside from needing to use Junio's SQUASH commit, to
avoid the \r bash-ism):

  1. I couldn't build without including locale.h, for the
 definition of setlocale() and the LC_MESSAGES constant (both used
 in get_preferred_languages).

 I'm not sure what portability issues there are with including it
 unconditionally. Should this possibly be tied into gettext.c, which
 already uses setlocale?

  2. The call to setlocale(LC_MESSAGES, NULL) in get_preferred_languages
 always returns C for me. This seems related to building with
 NO_GETTEXT (which I typically do), as we never init setlocale
 if NO_GETTEXT is set. This program demonstrates it:

#include stdio.h
#include string.h
#include locale.h

int main(int argc, char **argv)
{
if (argv[1]  !strcmp(argv[1], init))
setlocale(LC_MESSAGES, );
printf(%s, setlocale(LC_MESSAGES, NULL));
return 0;
}

 If I run it as LANG=en_US.UTF-8 ./a.out, it prints C. If I run
 it as LANG=en_US.UTF-8 ./a.out init, it prints en_US.UTF-8. I
 think we either need to start unconditionally calling setlocale()
 as we do in git_setup_gettext, or we need to tie your feature to
 using gettext.

 This is what causes the failure of the de-DE test for me; building
 without NO_GETTEXT makes it work. Note that this doesn't affect the
 first test for ko-KR, because that test sets LANGUAGE, which we
 read ourselves (so we never make a setlocale() call).

  3. Even building with NO_GETTEXT, setlocale() does not want to
 report ja_JP.UTF-8 for me, making the third test fail.

 I think the issue is that I do not build the ja_JP locale on my
 system. Running dpkg-reconfigure locales and asking it to build
 ja_JP.UTF-8 makes the test pass. This is somewhat of a Debian-ism.
 From man locale-gen:

   By default, the locale package which provides the base support
   for localisation of libc-based programs does not contain usable
   localisation files for every supported language. This limitation
   has became necessary because of the substantial size of such
   files and the large number of languages supported by libc. As a
   result, Debian uses a special mechanism where we prepare the
   actual localisation files on the target host and distribute only
   the templates for them.

 I suspect it is inherited by Debian derivatives like Ubuntu. But I
 also don't know that we can count on other platforms having all of
 the locales either (e.g., they may ship them as separate packages,
 not all of which are installed).

 So I'm not sure of an easy way around this. You want 4 separate
 locales to thoroughly test, but you cannot rely on any particular
 locale being present on the user's system.

 Note that this is just a problem with the tests, probably not with
 the feature itself. Presumably people setting LANG=ja_JP actually
 have that locale on their system (though technically this feature
 is about asking the _server_ to use that language, it seems like
 you would do so because you were using that language locally, too).

-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