tiffany uk - The Engagement ring Women Dream about

2012-11-29 Thread kittycater65




The name connected with
[url=http://www.tiffanyandcoringsoutlet.co.uk/]tiffany uk[/url]  truly would
mean status and comfort. And, that is exactly what provides them web site
demand such high prices for their rings.

Keep in the mind that when buying a Tiffany call, that the Tiffany look and
brand tend to be of what you\'re buying compared to the product itself.
Diamonds aided by the same clarity and quality of them in rings from
Tiffany\'s are obtainable elsewhere, in a large number of cases, up to forty
to 70 % less than just what exactly Tiffany charges for his or her fantastic
rings.

Certainly, there's no denying that Tiffany rings are elegant. However, in
all honesty, one can obtain diamonds with extremely comparable quality for
fewer.
http://www.tiffanyandcoringsoutlet.co.uk




--
View this message in context: 
http://git.661346.n2.nabble.com/tiffany-uk-The-Engagement-ring-Women-Dream-about-tp7572341.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: reposurgeon now writes Subversion repositories

2012-11-29 Thread Daniel Shahaf
Eric S. Raymond wrote on Thu, Nov 29, 2012 at 00:59:45 -0500:
>   In summary, Subversion repository histories do not round-trip through
>   reposurgeon editing. File content changes are preserved but some
>   metadata is unavoidably lost.  Furthermore, writing out a DVCS history
>   in Subversion also loses significant portions of its metadata.
> 
>   Writing a Subversion repository or dump stream discards author
>   information, the committer's name, and the hostname part of the commit
>   address; only the commit timestamp and the local part of the
>   committer's email address are preserved, the latter becoming the
>   Subversion author field.  However, reading a Subversion repository and
>   writing it out again will preserve the author fields.
> 
> Subversion's metadata doesn't have separate author and committer
> properties, and doesn't store anything but a Unix user ID as
> attribution.  I don't see any way around this.

You're not fully informed, then.

1) svn:author revprops can contain any UTF-8 string.  They are not
restricted to Unix user id's.  (For example, they can contain full
names, if the administrator so chooses.)

2) You can define custom revision properties.  In your case, the easiest
way would be to set an reposurgeon:author property, alongside the
svn:author property.

You might also seek community consensus to reserve an svn:foo name for
the "original author" property --- perhaps svn:original-author --- so
that reposurgeon and other git->svn tools can interoperate in the way
they transfer the "original author" information.

I note that one can set revision properties at commit time:

svn commit -m logmsg --with-revprop svn:original-author="Patch Submitter 
"

>   Empty directories aren't represented in import streams. Consequently,
>   reading and writing Subversion repositories preserves file content,
>   but not empty directories.  It is also not guaranteed that after
>   editing a Subverson repository that the sequence of directory
>   creations and deletions relative to other operations will be
>   identical; the only guarantee is that enclosing directories will be
>   created before any files in them are.

How does reposurgeon handle empty directories with (node) properties?

% svnadmin create r
% svnmucc -mm -U file://$PWD/r mkdir foo propset k v foo

>   Subversion has a concept of "flows"; that is, named segments of
>   history corresponding to files or directories that are created when
>   the path is added, cloned when the path is copied, and deleted when
>   the path is deleted. This information is not preserved in import
>   streams or the internal representation that reposurgeon uses.  Thus,
>   after editing, the flow boundaries of a Subversion history may be
>   arbitrarily changed.
> 
> This is me being obsessive about documenting the details.  I think it
> is doubtful that most Subversion users even know flows exist.
> 

I think you're saying that adds might turn into copies, and vice-versa.
That is something users would notice --- it is certainly exposed in the
UI --- even though node-id's are not exposed to clients.

> 

Cheers

Daniel
--
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] completion: fix warning for zsh

2012-11-29 Thread Felipe Contreras
Otherwise the user might get something like:

  git-completion.sh:2466: command not found: compdef

If this script is loaded before compinit. The script would work either
way, but let's not be more annoying to the user.

Signed-off-by: Felipe Contreras 
---
 contrib/completion/git-completion.bash | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/contrib/completion/git-completion.bash 
b/contrib/completion/git-completion.bash
index af13fcc..0b77eb1 100644
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -2404,6 +2404,8 @@ __gitk_main ()
 if [[ -n ${ZSH_VERSION-} ]]; then
echo "WARNING: this script is deprecated, please see 
git-completion.zsh" 1>&2
 
+   autoload -U +X compinit && compinit
+
__gitcomp ()
{
emulate -L zsh
-- 
1.8.0.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] t4049: avoid test failures on filemode challenged file systems (Windows)

2012-11-29 Thread Johannes Sixt
From: Johannes Sixt 

The earlier change 74faaa16 (Fix "git diff --stat" for interesting - but
empty - file changes) needed to change the count of differing files
because the executable-bit changes of two empty files are now counted.

On file systems that do not record the executable bit, however, the old
file count was actually correct (and the updated tests fail) because the
mode change cannot be diagnosed by looking at the file system alone.

Change the mode not only on the file system, but also in the index;
compare the new state against the commit, so that the tests do not depend
on the file system's ability to record the executable bit, when possible.

The exception is the test for unmerged entries, which does depend on the
file system; we have to skip it.

Signed-off-by: Johannes Sixt 
---
Am 11/27/2012 22:21, schrieb Junio C Hamano:
> It turns out that there are at least two bugs in the diffstat
> counting code.  This series comes on top of the earlier 74faaa1 (Fix
> "git diff --stat" for interesting - but empty - file changes,
> 2012-10-17) to fix them.

The tests still fail on Windows. I am not sure whether there is a
difference in comparing the file system against the index or a commit.
If there is, then the updated tests might not test the same thing.

-- Hannes

 t/t4049-diff-stat-count.sh | 10 +-
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/t/t4049-diff-stat-count.sh b/t/t4049-diff-stat-count.sh
index 37f50cd..9e29e71 100755
--- a/t/t4049-diff-stat-count.sh
+++ b/t/t4049-diff-stat-count.sh
@@ -15,7 +15,7 @@ test_expect_success 'setup' '
 
 test_expect_success 'limit output to 2 (simple)' '
git reset --hard &&
-   chmod +x c d &&
+   test_chmod +x c d &&
echo a >a &&
echo b >b &&
cat >expect <<-\EOF
@@ -24,13 +24,13 @@ test_expect_success 'limit output to 2 (simple)' '
 ...
 4 files changed, 2 insertions(+)
EOF
-   git diff --stat --stat-count=2 >actual &&
+   git diff --stat --stat-count=2 HEAD >actual &&
test_i18ncmp expect actual
 '
 
 test_expect_success 'binary changes do not count in lines' '
git reset --hard &&
-   chmod +x c d &&
+   test_chmod +x c d &&
echo a >a &&
echo b >b &&
cat "$TEST_DIRECTORY"/test-binary-1.png >d &&
@@ -40,11 +40,11 @@ test_expect_success 'binary changes do not count in lines' '
 ...
 4 files changed, 2 insertions(+)
EOF
-   git diff --stat --stat-count=2 >actual &&
+   git diff --stat --stat-count=2 HEAD >actual &&
test_i18ncmp expect actual
 '
 
-test_expect_success 'exclude unmerged entries from total file count' '
+test_expect_success FILEMODE 'exclude unmerged entries from total file count' '
git reset --hard &&
echo a >a &&
echo b >b &&
-- 
1.8.0.1.1524.gaf6675c
--
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: Please pull l10n updates for 1.8.1 round 1

2012-11-29 Thread Jiang Xin
Hi,

New pull request with updates on Vietnamese for git 1.8.1 from Tran:


The following changes since commit 2d242fb3fc19fc9ba046accdd9210be8b9913f64:

  Update draft release notes for 1.8.1 (2012-11-21 13:32:58 -0800)

are available in the git repository at:

  git://github.com/git-l10n/git-po master

for you to fetch changes up to f93483ac94c21660422a19175f67cd3f8e87c531:

  Merge git://github.com/vnwildman/git (2012-11-29 16:25:40 +0800)



Jiang Xin (2):
  l10n: Update git.pot (14 new, 3 removed messages)
  Merge git://github.com/vnwildman/git

Peter Krefting (1):
  l10n: Update Swedish translation (1975t0f0u)

Tran Ngoc Quan (2):
  l10n: vi.po: update to git-v1.7.12-437-g1084f
  l10n: vi.po: Update follow git-v1.8.0-273-g2d242

 po/git.pot | 1224 --
 po/sv.po   | 1246 --
 po/vi.po   | 1951 +++-
 3 files changed, 2305 insertions(+), 2116 deletions(-)



2012/11/29 Trần Ngọc Quân :
> Hello JX,
> You missing pull from my repo (2 commits instead of one, v1.7 and v1.8): 
> dcc52a0449c7ee10690e23152e63b9798f8a332f
>
> $ git log -n 2
> commit dcc52a0449c7ee10690e23152e63b9798f8a332f
> Author: Tran Ngoc Quan 
> Date:   Sat Nov 24 07:37:35 2012 +0700
>
> l10n: vi.po: Update follow git-v1.8.0-273-g2d242
>
> Signed-off-by: Tran Ngoc Quan 
>
> commit 131fa518f10521b4a534863331decbfef2875f24
> Author: Tran Ngoc Quan 
> Date:   Wed Oct 31 08:19:59 2012 +0700
>
> l10n: vi.po: update to git-v1.7.12-437-g1084f
>
>  * updated all new messages (1967t0f0u)
>  * make quote become more good-looking
>
> Signed-off-by: Tran Ngoc Quan 
>
>  https://github.com/vnwildman/git.git master
> Thanks,
> Trần Ngọc Quân
>
> -Original Message-
> From: Jiang Xin [mailto:worldhello@gmail.com]
> Sent: Thursday, November 29, 2012 8:19 AM
> To: Junio C Hamano
> Cc: Git List; Peter Krefting; Trần Ngọc Quân; Nguyễn Thái Ngọc Duy
> Subject: Please pull l10n updates for 1.8.1 round 1
>
> Hi, Junio
>
> The following changes since commit 2d242fb3fc19fc9ba046accdd9210be8b9913f64:
>
>   Update draft release notes for 1.8.1 (2012-11-21 13:32:58 -0800)
>
> are available in the git repository at:
>
>   git://github.com/git-l10n/git-po.git master
>
> for you to fetch changes up to 647d5183b8dc36b38d19c7a3f388108f245b11d3:
>
>   l10n: Update Swedish translation (1975t0f0u) (2012-11-23 08:59:11 +0100)
>
> 
> Jiang Xin (1):
>   l10n: Update git.pot (14 new, 3 removed messages)
>
> Peter Krefting (1):
>   l10n: Update Swedish translation (1975t0f0u)
>
> Tran Ngoc Quan (1):
>   l10n: vi.po: update to git-v1.7.12-437-g1084f
>
>  po/git.pot | 1224 --
>  po/sv.po   | 1246 +--
>  po/vi.po   | 1597 
> ++--
>  3 files changed, 2097 insertions(+), 1970 deletions(-)
>
> --
> Jiang Xin
>
--
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: reposurgeon now writes Subversion repositories

2012-11-29 Thread Branko Čibej
On 29.11.2012 08:58, Daniel Shahaf wrote:
> I think you're saying that adds might turn into copies, and
> vice-versa. That is something users would notice --- it is certainly
> exposed in the UI --- even though node-id's are not exposed to clients. 

... yet. But there are plans underway to expose them.

-- 
Branko Čibej
Director of Subversion | WANdisco | www.wandisco.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: Millisecond precision in timestamps?

2012-11-29 Thread Eric S. Raymond
Felipe Contreras :
> On Thu, Nov 29, 2012 at 8:11 AM, Junio C Hamano  wrote:
> > Steven Michalske  writes:
> >
> >> Would having arbitrary key value pairs be useful in the git data
> >> model?
> >
> > My answer to the question is that it is harmful to the data model,
> > but the benefit of going against the data model _may_ outweigh the
> > downside.  It is all relative.
> 
> If git doesn't provide the capability, people will keep using the
> commit message to store that extra information, which I would think is
> even more harmful. An standard 'commit-extra' note or something would
> help deal with that.

Agreed.  

My use case for a capability like this is one of the more common ones.
I want to be able to store a fossil commit-ID inherited from another
VCS outside the commit comment.  The absence of a key/value store forces
me into some annoying kludges.
-- 
http://www.catb.org/~esr/";>Eric S. Raymond
--
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-11-29 Thread Michael J Gruber
Ralf Thielow venit, vidit, dixit 28.11.2012 19:22:
>> Hi Ralf,
>>
>> This is the middle third of my review.  Sorry for the long wait!  I hope
>> it can still be useful.
>>
> 
> Hi Thomas,
> 
> no problem. Thanks for your review. Of course it's very useful.
> Some of the mistakes I made are so obvious that I can't say what
> I've had in mind when translation these messages :/ But some aren't,
> so thanks for the further explanations within your review.
> 
>> I don't really share your apparent aversion to just using "" :-)
> I don't really have one :) so I'm fine with using .
> 
>> This would be a good time to settle on a good translation for
>> "rewriting".  Perhaps "neu schreiben".  "Überschreiben" to me implies
> On some other places we actually use "neu schreiben".

How about "umschreiben"? "neu schreiben" is more like "write from
scratch", whereas "rewrite" is more often about taking a given base and
modifying it.

>>> -msgstr ""
>>> +msgstr "erzeugt kleinere Pakete"
>>
>> Smaller is not really the point: they are packs that do not have the
> [...]
>> You could call them "abgespeckt" ;-)
> I used "dünner"!?
> 
> Furthermore I've unified the translation of "email" to "Email",
> not "eMail". You'll see the result below. I hope I haven't missed
> something.
> 
> Thanks,
> Ralf
> 
> ---
>  po/de.po | 95 
> 
>  1 file changed, 47 insertions(+), 48 deletions(-)
> 
> diff --git a/po/de.po b/po/de.po
> index fe6e8cf..1a75ea2 100644
> --- a/po/de.po
> +++ b/po/de.po
...
>  #: builtin/fsck.c:608
>  msgid "git fsck [options] [...]"
> @@ -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 ""

"alternate objects" (hopefully) don't change much, so that "wechselnde"
is misleading.

Is there a set translation standard for the "alternative object store"
mechanism in git (alternates)? Otherwise "alternative Objekte" may be
choice which is close to the original and conveys the aspect that they
are objects from an alternative store.


>  #: builtin/grep.c:817
>  msgid "indicate hit with exit status without output"
> -msgstr "kennzeichnet Übereinstimmungen mit Beendigungsstatus, ohne Ausgabe"
> +msgstr "zeigt Übereinstimmungen mit Beendigungsstatus, ohne Ausgabe"

maybe "zeigt Übereinstimmungen nur durch Beendigungsstatus an"

"mit" sounds like "including", "additionally". Also, nothing is shown
("zeigt"), but something is indicated ("zeigt an").


>  #: builtin/log.c:102
>  msgid "decorate options"
> -msgstr "Ausgabeoptionen"
> +msgstr "decorate Optionen"

"decorate-Optionen" (unless we want to match the standard set by the bad
old K&R translation ;) )


>  #: builtin/log.c:1098
>  msgid "add To: header"
> -msgstr "fügt Kopfteil \"To:\" hinzu"
> +msgstr "fügt  \"To:\" Header hinzu"

Here and in the following I'd a "-", e.g.

msgstr "fügt  \"To:\"-Header hinzu"

>  #: builtin/log.c:1100
>  msgid "add Cc: header"
> -msgstr "fügt Kopteil \"Cc:\" hinzu"
> +msgstr "fügt \"Cc:\" Header hinzu"
...
> -"lädt Konfiguration für  beim Überschreiben von Versionen "
> +"lädt Konfiguration für  beim Neuschreiben von Versionen "
>  "(impliziert --stdin)"

"Umschreiben" (if that becomes the agreed upon term for "rewrite").

Just my two Pfennig ;)

Michael
--
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: reposurgeon now writes Subversion repositories

2012-11-29 Thread Eric S. Raymond
Daniel Shahaf :
> > Subversion's metadata doesn't have separate author and committer
> > properties, and doesn't store anything but a Unix user ID as
> > attribution.  I don't see any way around this.
> 
> You're not fully informed, then.
> 
> 1) svn:author revprops can contain any UTF-8 string.  They are not
> restricted to Unix user id's.  (For example, they can contain full
> names, if the administrator so chooses.)

Right.  At one point during the development of this feature I was
accidentally storing the full email field in this property.  So I
already knew that this is allowed at some level.  

And, I have no trouble believing that svn log will cheerfully echo
anything that I choose to stuff in that field.  

But...

(1) How much work would it be it to set up a Subversion installation 
so that when I svn commit, the tool does the right thing, e.g. puts
a DVCS-style fullname/email string in there?  

(2) Have the tools been tested for bugs arising from having whitespace
in that data?

Really, if it's actually easy to set up DVCS-style globally unique IDs you
Subversion guys ought to be shouting it from the housetops.  The absence
of this capability is a serious PITA in several situations, including 
for example migrating projects between forges.

RFC: If I wrote a patch that let Subversion users set their own
content string for the author field in ~/.subversion/config, would
you merge it?  Because I'd totally write that.

> 2) You can define custom revision properties.  In your case, the easiest
> way would be to set an reposurgeon:author property, alongside the
> svn:author property.

Yeah, sure, I've assumed all along this wouldn't break if I tried it.
If I actually thought you guys were capable of designing a data model
with a perfectly general-looking store of key/value pairs and then
arbitrarily restricting the key set so I couldn't do that, I'd almost
have to find each and every one of you and kick your asses into next
Tuesday on account of blatant stupidity. I have no such plans :-).

But...what good does this capability do?  OK, it would assist
round-tripping back to gitspace, but while that's kind of cool I don't
see any help for a normal Subversion workflow here.
 
> You might also seek community consensus to reserve an svn:foo name for
> the "original author" property --- perhaps svn:original-author --- so
> that reposurgeon and other git->svn tools can interoperate in the way
> they transfer the "original author" information.

OK.  But I like the idea of letting the users set their own author
content string better.  Instead of another layer of kluges, why
shouldn't Subversion join the DVCSes in the happy land of
Internet-scoped attributions?

> How does reposurgeon handle empty directories with (node) properties?

Currently by ignoring all of them except svn:ignore, which it turns 
into .gitignore content on the gitspace side.  And now vice-versa, too.

Not clear what else it *could* do.  I'd take suggestions.

> >   Subversion has a concept of "flows"; that is, named segments of
> >   history corresponding to files or directories that are created when
> >   the path is added, cloned when the path is copied, and deleted when
> >   the path is deleted. This information is not preserved in import
> >   streams or the internal representation that reposurgeon uses.  Thus,
> >   after editing, the flow boundaries of a Subversion history may be
> >   arbitrarily changed.
> > 
> > This is me being obsessive about documenting the details.  I think it
> > is doubtful that most Subversion users even know flows exist.
> 
> I think you're saying that adds might turn into copies, and vice-versa.
> That is something users would notice --- it is certainly exposed in the
> UI --- even though node-id's are not exposed to clients.

I'm saying nobody thinks of flows when they do branch copies.  It's
not just that users don't see node IDs, it's that no part of most users'
mental model of how Subversion works resembles them.
-- 
http://www.catb.org/~esr/";>Eric S. Raymond
--
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-remote-mediawiki: escape double quotes and LF in file names

2012-11-29 Thread Matthieu Moy
A mediawiki page can contain, and even start with a " character, we have
to escape it when generating the fast-export stream. While we're there,
also escape newlines, but I don't think we can get them from MediaWiki
pages.

Signed-off-by: Matthieu Moy 
---
 contrib/mw-to-git/git-remote-mediawiki | 15 ---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/contrib/mw-to-git/git-remote-mediawiki 
b/contrib/mw-to-git/git-remote-mediawiki
index 68555d4..e7a0e7b 100755
--- a/contrib/mw-to-git/git-remote-mediawiki
+++ b/contrib/mw-to-git/git-remote-mediawiki
@@ -711,6 +711,13 @@ sub fetch_mw_revisions {
return ($n, @revisions);
 }
 
+sub fe_escape_path {
+my $path = shift;
+$path =~ s/"/\\"/g;
+$path =~ s/\n/\\n/g;
+return $path;
+}
+
 sub import_file_revision {
my $commit = shift;
my %commit = %{$commit};
@@ -738,15 +745,17 @@ sub import_file_revision {
print STDOUT "from refs/mediawiki/$remotename/master^0\n";
}
if ($content ne DELETED_CONTENT) {
-   print STDOUT "M 644 inline $title.mw\n";
+   print STDOUT "M 644 inline " .
+   fe_escape_path($title . ".mw") . "\n";
literal_data($content);
if (%mediafile) {
-   print STDOUT "M 644 inline $mediafile{title}\n";
+   print STDOUT "M 644 inline "
+   . fe_escape_path($mediafile{title}) . "\n";
literal_data_raw($mediafile{content});
}
print STDOUT "\n\n";
} else {
-   print STDOUT "D $title.mw\n";
+   print STDOUT "D " . fe_escape_path($title . ".mw") . "\n";
}
 
# mediawiki revision number in the git note
-- 
1.8.0.319.g8abfee4

--
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: reposurgeon now writes Subversion repositories

2012-11-29 Thread Daniel Shahaf
(note, other half of the thread is on dev@svn only..)

Eric S. Raymond wrote on Thu, Nov 29, 2012 at 06:46:37 -0500:
> Daniel Shahaf :
> > You might also seek community consensus to reserve an svn:foo name for
> > the "original author" property --- perhaps svn:original-author --- so
> > that reposurgeon and other git->svn tools can interoperate in the way
> > they transfer the "original author" information.
> 
> OK.  But I like the idea of letting the users set their own author
> content string better.  Instead of another layer of kluges, why

I don't see the kludge here --- git has a "author" != "committer"
distinction, svn doesn't, so if you want to grow that distinction the
most natural way is a new property.  Storing additional information in
svn:author is a separate issue.

> > >   Subversion has a concept of "flows"; that is, named segments of
> > >   history corresponding to files or directories that are created when
> > >   the path is added, cloned when the path is copied, and deleted when
> > >   the path is deleted. This information is not preserved in import
> > >   streams or the internal representation that reposurgeon uses.  Thus,
> > >   after editing, the flow boundaries of a Subversion history may be
> > >   arbitrarily changed.
> > > 
> > > This is me being obsessive about documenting the details.  I think it
> > > is doubtful that most Subversion users even know flows exist.
> > 
> > I think you're saying that adds might turn into copies, and vice-versa.
> > That is something users would notice --- it is certainly exposed in the
> > UI --- even though node-id's are not exposed to clients.
> 
> I'm saying nobody thinks of flows when they do branch copies.  It's
> not just that users don't see node IDs, it's that no part of most users'
> mental model of how Subversion works resembles them.

I'm still not sure what you have in mind.  I note that 'svn log' and
'svn blame' cross both file copies and branch creation --- that's one
effect of "'svn cp foo bar; svn ci' causes bar to be related to foo".

> -- 
>   http://www.catb.org/~esr/";>Eric S. Raymond
--
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: reposurgeon now writes Subversion repositories

2012-11-29 Thread Eric S. Raymond
Daniel Shahaf :
> I don't see the kludge here --- git has a "author" != "committer"
> distinction, svn doesn't, so if you want to grow that distinction the
> most natural way is a new property.  Storing additional information in
> svn:author is a separate issue.

See my advocacy to Branko of going to Internet-scoped IDs. The kludge
would be maintaining the local and Internet-scoped identifications 
as different properties and having to decide which one to key on
ad-hoc.  Nothing to do with the author/committer distinction. 
-- 
http://www.catb.org/~esr/";>Eric S. Raymond
--
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: git describe not matching git log

2012-11-29 Thread Michael J Gruber
Steven Penny venit, vidit, dixit 29.11.2012 10:04:
> It seems "git describe" is not matching "git log" as detailed in the help, in
> some cases. From git describe --help
> 
>   [torvalds@g5 git]$ git describe parent
>   v1.0.4-14-g2414721
> 
>   The number of additional commits is the number of commits which would
>   be displayed by "git log v1.0.4..parent".
> 
> GOOD
> 
>   $ git clone git://github.com/antirez/redis.git
> 
>   $ cd redis
> 
>   $ git describe unstable
>   with-deprecated-diskstore-1050-g7383c3b
> 
>   $ git log --oneline with-deprecated-diskstore..unstable | wc
>  1050   11779   78709
> 
> BAD
> 
>   $ git clone git://github.com/git/git.git
> 
>   $ cd git
> 
>   $ git describe master
>   v1.8.0.1-264-g226dcb5
> 
>   $ git log --oneline v1.8.0.1..master | wc
>   2601650   14154
> 

This is due to date skew: git-describe uses "insert_by_date" when it
traverses the dag, and this can go wrong.

Interestingling, this seems to get fixed by using Jeff's generation
numbers and "insert_by_generation" instead, so it does seem go wrong for
226dcb5~60 or so. git-describe's logic is a bit convoluted and may
depend on how we insert when generation numbers are the same... Have to
do more testing.

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


AW: reposurgeon now writes Subversion repositories

2012-11-29 Thread Markus Schaber
Hi,

Von: Eric S. Raymond [mailto:e...@thyrsus.com]
> > How does reposurgeon handle empty directories with (node) properties?
> 
> Currently by ignoring all of them except svn:ignore, which it turns
> into .gitignore content on the gitspace side.  And now vice-versa, too.
> 
> Not clear what else it *could* do.  I'd take suggestions.

AFAIR, SvnBridge (which bridges SVN to Team Foundation Server for CodePlex) 
creates a hidden .svnproperties file where all the properties of the directory 
and files are stored.

I'm not really sure, but maybe this could be used as some standard to bridge 
svn properties to non-svn VCSes.

Best regards

Markus Schaber

CODESYS(r) a trademark of 3S-Smart Software Solutions GmbH

Inspiring Automation Solutions

3S-Smart Software Solutions GmbH
Dipl.-Inf. Markus Schaber | Product Development Core Technology
Memminger Str. 151 | 87439 Kempten | Germany
Tel. +49-831-54031-979 | Fax +49-831-54031-50

E-Mail: m.scha...@codesys.com | Web: http://www.codesys.com
CODESYS internet forum: http://forum.codesys.com

Managing Directors: Dipl.Inf. Dieter Hess, Dipl.Inf. Manfred Werner | Trade 
register: Kempten HRB 6186 | Tax ID No.: DE 167014915
--
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


gitk: highlighting commits "touching path" with globs doesn't work for files list

2012-11-29 Thread Yaroslav Halchenko
Hi GIT Gurus,

Highlighting files (in patch view) and commits which modified those
files is a really nice feature to have.   Often it is needed to
highlight based on a glob expression for files, e.g. '*Makefile*'
-- that seems to highlight the commits but files in the patch view
are no longer highlighted, which significantly reduces usefulness of
such a feature.

Also, those choices (Exact/IgnCase/Regexp) seems to have no relation
with the edit box when looking for "touching path" files, so shouldn't
it be somehow disabled/emptied to avoid users trying to create the
ultimate filepattern regexp for no good reason?  (the same for next
field on where to search through -- All Fields/... ) ;)

-- 
Yaroslav O. Halchenko
Postdoctoral Fellow,   Department of Psychological and Brain Sciences
Dartmouth College, 419 Moore Hall, Hinman Box 6207, Hanover, NH 03755
Phone: +1 (603) 646-9834   Fax: +1 (603) 646-1419
WWW:   http://www.linkedin.com/in/yarik
--
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] If `egrep` is aliased, temporary disable it in bash.completion

2012-11-29 Thread Adam Tkac
Originally reported as https://bugzilla.redhat.com/show_bug.cgi?id=863780

Signed-off-by: Adam Tkac 
Signed-off-by: Holger Arnold 
---
 contrib/completion/git-completion.bash | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/contrib/completion/git-completion.bash 
b/contrib/completion/git-completion.bash
index 0960acc..79073c2 100644
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -565,7 +565,7 @@ __git_complete_strategy ()
 __git_list_all_commands ()
 {
local i IFS=" "$'\n'
-   for i in $(git help -a|egrep '^  [a-zA-Z0-9]')
+   for i in $(git help -a| \egrep '^  [a-zA-Z0-9]')
do
case $i in
*--*) : helper pattern;;
-- 
1.8.0


-- 
Adam Tkac, Red Hat, Inc.
--
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] DESTDIR support in contrib/subtree/Makefile

2012-11-29 Thread Adam Tkac
Signed-off-by: Adam Tkac 
---

It is a good habit in Makefiles to honor DESTDIR variable to support

`make DESTDIR=/instalroot install`

syntax.

Comments are welcomed.

Regards, Adam

 contrib/subtree/Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/contrib/subtree/Makefile b/contrib/subtree/Makefile
index 05cdd5c..36ae3e4 100644
--- a/contrib/subtree/Makefile
+++ b/contrib/subtree/Makefile
@@ -30,12 +30,12 @@ $(GIT_SUBTREE): $(GIT_SUBTREE_SH)
 doc: $(GIT_SUBTREE_DOC)
 
 install: $(GIT_SUBTREE)
-   $(INSTALL) -m 755 $(GIT_SUBTREE) $(libexecdir)
+   $(INSTALL) -m 755 $(GIT_SUBTREE) $(DESTDIR)$(libexecdir)
 
 install-doc: install-man
 
 install-man: $(GIT_SUBTREE_DOC)
-   $(INSTALL) -m 644 $^ $(man1dir)
+   $(INSTALL) -m 644 $^ $(DESTDIR)$(man1dir)
 
 $(GIT_SUBTREE_DOC): $(GIT_SUBTREE_XML)
xmlto -m $(MANPAGE_NORMAL_XSL)  man $^
-- 
1.8.0


-- 
Adam Tkac, Red Hat, Inc.
--
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


[RFC] git-submodule update: Add --commit option

2012-11-29 Thread W. Trevor King
This option triggers automatic commits when `submodule update` changes
any gitlinked submodule SHA-1s.  The commit message contains a
`shortlog` summary of the changes for each changed submodule.
---

On Tue, Nov 27, 2012 at 07:51:42PM +0100, Heiko Voigt wrote:
> BTW, I am more and more convinced that an automatically manufactured
> commit on update with --branch should be the default. What do other
> think? Sascha raised a concern that he would not want this, but as far as
> I understood he let the CI-server do that so I see no downside to
> natively adding that to git. People who want to manually craft those
> commits can still amend the generated commit. Since this is all about
> helping people keeping their submodules updated why not go the full way?

Here's a first pass (without documentation) for automatic commits on
submodule updates.  There have been a number of requests for
automatically-committed submodule updates due to submodule upstreams.
This patch shows how you can do that (if applied with my `submodule
update --remote` series), and reuse the same logic to automatically
commit changes due to local submodule changes (as shown here in the
new test).

I think the logic is pretty good, but the implementation is pretty
ugly due to POSIX shell variable limitations.  I'm basically trying to
pass an array of [(name, sm_path, sha1, subsha1), ...] into
commit_changes().  I though about perling-out in commit_changes(), but
I lack sufficient perl-fu to know how to tie clear_local_git_env, cd,
and shortlog up in a single open2 call.  If anyone can give me some
implementation pointers, that would be very helpful.

This is against v1.8.0 (without my --remote series).  To apply on top
of the --remote series, you'd have to save the original gitlinked
$sha1 and use that original value when constructing changed_modules.
I can attach this to the end of the --remote series if desired, but I
think this patch could also stand on its own.

Obviously this still needs documentation, etc., but I wanted feedback
on the implementation before I started digging into that.

Cheers,
Trevor

---
 git-submodule.sh| 67 -
 t/t7406-submodule-update.sh | 19 +
 2 files changed, 85 insertions(+), 1 deletion(-)

diff --git a/git-submodule.sh b/git-submodule.sh
index ab6b110..d9a59af 100755
--- a/git-submodule.sh
+++ b/git-submodule.sh
@@ -8,7 +8,7 @@ dashless=$(basename "$0" | sed -e 's/-/ /')
 USAGE="[--quiet] add [-b branch] [-f|--force] [--reference ] [--] 
 []
or: $dashless [--quiet] status [--cached] [--recursive] [--] [...]
or: $dashless [--quiet] init [--] [...]
-   or: $dashless [--quiet] update [--init] [-N|--no-fetch] [-f|--force] 
[--rebase] [--reference ] [--merge] [--recursive] [--] [...]
+   or: $dashless [--quiet] update [--init] [-N|--no-fetch] [-f|--force] 
[--commit] [--rebase] [--reference ] [--merge] [--recursive] [--] 
[...]
or: $dashless [--quiet] summary [--cached|--files] [--summary-limit ] 
[commit] [--] [...]
or: $dashless [--quiet] foreach [--recursive] 
or: $dashless [--quiet] sync [--] [...]"
@@ -21,6 +21,7 @@ require_work_tree
 command=
 branch=
 force=
+commit=
 reference=
 cached=
 recursive=
@@ -240,6 +241,52 @@ module_clone()
 }
 
 #
+# Commit changed submodule gitlinks
+#
+# $1 = name-a;sha1-a;subsha1-a\n[name-b;sha1-b;subsha1-b\n...]
+#
+commit_changes()
+{
+   echo "commiting $1"
+   OIFS="$IFS"
+   IFS=";"
+   paths=$(echo "$1" |
+   while read name sm_path sha1 subsha1
+   do
+   echo "$sm_path"
+   done
+   )
+   names=$(echo "$1" |
+   while read name sm_path sha1 subsha1
+   do
+   printf ' %s' "$name"
+   done
+   )
+   summary="$(eval_gettext "Updated submodules:")$names"
+   body=$(echo "$1" |
+   while read name sm_path sha1 subsha1
+   do
+   if test "$name" = "$sm_path"
+   then
+   printf 'Changes to %s:\n\n' "$name"
+   else
+   printf 'Changes to %s (%s):\n\n' "$name" 
"$sm_path"
+   fi
+   (
+   clear_local_git_env
+   cd "$sm_path" &&
+   git shortlog "${sha1}..${subsha1}" ||
+   die "$(eval_gettext "Unable to generate 
shortlog in submodule path '\$sm_path'")"
+   )
+   done
+   )
+   IFS="$OIFS"
+   message="$(printf '%s\n\n%s\n' "$summary" "$body")"
+   echo "message: [$message]"
+   git commit -m "$message" $paths
+}
+
+#
 # Add a new submodule to the working tree, .gitmodules and the index
 #
 # $@ = repo path
@@ -515,6 +562,9 @@ cmd_update()
-f|--force)
 

Re: [PATCH] t4049: avoid test failures on filemode challenged file systems (Windows)

2012-11-29 Thread Junio C Hamano
Johannes Sixt  writes:

>> It turns out that there are at least two bugs in the diffstat
>> counting code.  This series comes on top of the earlier 74faaa1 (Fix
>> "git diff --stat" for interesting - but empty - file changes,
>> 2012-10-17) to fix them.
>
> The tests still fail on Windows. I am not sure whether there is a
> difference in comparing the file system against the index or a commit.
> If there is, then the updated tests might not test the same thing.

The hunks in the patch look fine.  The last one that tests unmerged
entries do not have to have "chmod" if it gives you trouble (you
would need to reduce number of files from 4 to 3 if you go that
route, I think).
--
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] git-submodule update: Add --commit option

2012-11-29 Thread W. Trevor King
On Thu, Nov 29, 2012 at 11:12:16AM -0500, W. Trevor King wrote:
> +  test "a" = "b"

This kills the test (with --immediate) so you can look at the
generated commit.  If you actually want the test to pass (e.g. if this
becomes a PATCH and not an RFC), this line should be removed.

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


signature.asc
Description: OpenPGP digital signature


Re: [PATCH] git-remote-mediawiki: escape double quotes and LF in file names

2012-11-29 Thread Junio C Hamano
Matthieu Moy  writes:

> A mediawiki page can contain, and even start with a " character, we have
> to escape it when generating the fast-export stream. While we're there,
> also escape newlines, but I don't think we can get them from MediaWiki
> pages.
>
> Signed-off-by: Matthieu Moy 
> ---
>  contrib/mw-to-git/git-remote-mediawiki | 15 ---
>  1 file changed, 12 insertions(+), 3 deletions(-)
>
> diff --git a/contrib/mw-to-git/git-remote-mediawiki 
> b/contrib/mw-to-git/git-remote-mediawiki
> index 68555d4..e7a0e7b 100755
> --- a/contrib/mw-to-git/git-remote-mediawiki
> +++ b/contrib/mw-to-git/git-remote-mediawiki
> @@ -711,6 +711,13 @@ sub fetch_mw_revisions {
>   return ($n, @revisions);
>  }
>  
> +sub fe_escape_path {
> +my $path = shift;
> +$path =~ s/"/\\"/g;
> +$path =~ s/\n/\\n/g;
> +return $path;
> +}

Is this sufficient?

My reading of the big comment at the beginning of fast-import.c is
that you would also want to quote each backslash; otherwise a
character (or an octal) after it will be taken as a C-style quoted
special letter, no?

>  sub import_file_revision {
>   my $commit = shift;
>   my %commit = %{$commit};
> @@ -738,15 +745,17 @@ sub import_file_revision {
>   print STDOUT "from refs/mediawiki/$remotename/master^0\n";
>   }
>   if ($content ne DELETED_CONTENT) {
> - print STDOUT "M 644 inline $title.mw\n";
> + print STDOUT "M 644 inline " .
> + fe_escape_path($title . ".mw") . "\n";
>   literal_data($content);
>   if (%mediafile) {
> - print STDOUT "M 644 inline $mediafile{title}\n";
> + print STDOUT "M 644 inline "
> + . fe_escape_path($mediafile{title}) . "\n";
>   literal_data_raw($mediafile{content});
>   }
>   print STDOUT "\n\n";
>   } else {
> - print STDOUT "D $title.mw\n";
> + print STDOUT "D " . fe_escape_path($title . ".mw") . "\n";
>   }
>  
>   # mediawiki revision number in the git note
--
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] git-submodule update: Add --commit option

2012-11-29 Thread W. Trevor King
On Thu, Nov 29, 2012 at 11:12:16AM -0500, W. Trevor King wrote:
> +  test "$(git log -1 --oneline)" = "bbdbe2d Updated submodules: 
> submodule"

s/bbdbe2d/cd69713/

I forgot to update the SHA-1 here after tweaking the commit message
format.  I'd like to rewrite this test so it won't use the SHA-1, but
this was the quickest way to check that the commit message and gitlink
were both changed appropriately.

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


signature.asc
Description: OpenPGP digital signature


Re: Millisecond precision in timestamps?

2012-11-29 Thread Junio C Hamano
"Eric S. Raymond"  writes:

> Felipe Contreras :
>> On Thu, Nov 29, 2012 at 8:11 AM, Junio C Hamano  wrote:
>> > Steven Michalske  writes:
>> >
>> >> Would having arbitrary key value pairs be useful in the git data
>> >> model?
>> >
>> > My answer to the question is that it is harmful to the data model,
>> > but the benefit of going against the data model _may_ outweigh the
>> > downside.  It is all relative.
>
> My use case for a capability like this is one of the more common ones.
> I want to be able to store a fossil commit-ID inherited from another
> VCS outside the commit comment.

That is exactly why I said it is all relative.  If it helps your
application, you can weigh the pros-and-cons yourself and choose to
throw "junk" extended header fields in the commit objects you
create, using hash-object (or commit-tree).  You can read it out
using cat-file and do whatever you want to do with it, and modern
Git (v1.5.0 was from early 2007) and tools that are designed to work
with Git know to ignore such "junk" field.

> The absence of a key/value store forces me into some annoying
> kludges.

Do not do annoying kludge, then.  Come up with a method to encode
your list of (key,value) tuples into a single string, throw a
custom extra header after all the standard header fields in, perhaps
like this:

tree 0664b9c82d87269b335ff78f32d0e4a504f58cfc
author A U Thor  135599 +0900
committer C O Mitter  135599 +0900
encoding iso-2022-jp
reposurgeon-metadata your-serialized-list-of-key-value-tuples
 second-line-of-such-serialization
 third-line-of-such-serialization

My first commit

Signed-off-by: A U Thor 
Signed-off-by: C O Mitter 


--
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-remote-mediawiki: escape double quotes and LF in file names

2012-11-29 Thread Matthieu Moy
Junio C Hamano  writes:

>> +sub fe_escape_path {
>> +my $path = shift;
>> +$path =~ s/"/\\"/g;
>> +$path =~ s/\n/\\n/g;
>> +return $path;
>> +}
>
> Is this sufficient?
>
> My reading of the big comment at the beginning of fast-import.c is
> that you would also want to quote each backslash;

Nice catch, thanks.

Also, I was lacking the double-quotes around $path. In my defense, I had
only read the doc, not the code, and git-fast-import.txt was less
complete than fast-import.c. New patch follows, fixing the doc too.

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/
--
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 v2] git-remote-mediawiki: escape ", \, and LF in file names

2012-11-29 Thread Matthieu Moy
A mediawiki page can contain, and even start with a " character, we have
to escape it when generating the fast-export stream, as well as \
character. While we're there, also escape newlines, but I don't think we
can get them from MediaWiki pages.

Signed-off-by: Matthieu Moy 
---
 contrib/mw-to-git/git-remote-mediawiki  | 16 +---
 contrib/mw-to-git/t/t9362-mw-to-git-utf8.sh | 26 ++
 2 files changed, 39 insertions(+), 3 deletions(-)

diff --git a/contrib/mw-to-git/git-remote-mediawiki 
b/contrib/mw-to-git/git-remote-mediawiki
index 68555d4..094129d 100755
--- a/contrib/mw-to-git/git-remote-mediawiki
+++ b/contrib/mw-to-git/git-remote-mediawiki
@@ -711,6 +711,14 @@ sub fetch_mw_revisions {
return ($n, @revisions);
 }
 
+sub fe_escape_path {
+my $path = shift;
+$path =~ s/\\//g;
+$path =~ s/"/\\"/g;
+$path =~ s/\n/\\n/g;
+return '"' . $path . '"';
+}
+
 sub import_file_revision {
my $commit = shift;
my %commit = %{$commit};
@@ -738,15 +746,17 @@ sub import_file_revision {
print STDOUT "from refs/mediawiki/$remotename/master^0\n";
}
if ($content ne DELETED_CONTENT) {
-   print STDOUT "M 644 inline $title.mw\n";
+   print STDOUT "M 644 inline " .
+   fe_escape_path($title . ".mw") . "\n";
literal_data($content);
if (%mediafile) {
-   print STDOUT "M 644 inline $mediafile{title}\n";
+   print STDOUT "M 644 inline "
+   . fe_escape_path($mediafile{title}) . "\n";
literal_data_raw($mediafile{content});
}
print STDOUT "\n\n";
} else {
-   print STDOUT "D $title.mw\n";
+   print STDOUT "D " . fe_escape_path($title . ".mw") . "\n";
}
 
# mediawiki revision number in the git note
diff --git a/contrib/mw-to-git/t/t9362-mw-to-git-utf8.sh 
b/contrib/mw-to-git/t/t9362-mw-to-git-utf8.sh
index 246d47d..b6405ce 100755
--- a/contrib/mw-to-git/t/t9362-mw-to-git-utf8.sh
+++ b/contrib/mw-to-git/t/t9362-mw-to-git-utf8.sh
@@ -318,4 +318,30 @@ test_expect_success 'git push with \ in format control' '
 '
 
 
+test_expect_success 'fast-import meta-characters in page name (mw -> git)' '
+   wiki_reset &&
+   wiki_editpage \"file\"_\\_foo "expect to be called \"file\"_\\_foo" 
false &&
+   git clone mediawiki::'"$WIKI_URL"' mw_dir_21 &&
+   test_path_is_file mw_dir_21/\"file\"_\\_foo.mw &&
+   wiki_getallpage ref_page_21 &&
+   test_diff_directories mw_dir_21 ref_page_21
+'
+
+
+test_expect_success 'fast-import meta-characters in page name (git -> mw) ' '
+   wiki_reset &&
+   git clone mediawiki::'"$WIKI_URL"' mw_dir_22 &&
+   (
+   cd mw_dir_22 &&
+   echo "this file is called \"file\"_\\_foo.mw" >\"file\"_\\_foo 
&&
+   git add . &&
+   git commit -am "file \"file\"_\\_foo" &&
+   git pull &&
+   git push
+   ) &&
+   wiki_getallpage ref_page_22 &&
+   test_diff_directories mw_dir_22 ref_page_22
+'
+
+
 test_done
-- 
1.8.0.319.g8abfee4

--
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] git-fast-import.txt: improve documentation for quoted paths

2012-11-29 Thread Matthieu Moy
The documentation mentionned only newlines and double quotes as
characters needing escaping, but the backslash also needs it. Also, the
documentation was not clearly saying that double quotes around the file
name were required (double quotes in the examples could be interpreted as
part of the sentence, not part of the actual string).

Signed-off-by: Matthieu Moy 
---
 Documentation/git-fast-import.txt | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/Documentation/git-fast-import.txt 
b/Documentation/git-fast-import.txt
index 6603a7a..35b909c 100644
--- a/Documentation/git-fast-import.txt
+++ b/Documentation/git-fast-import.txt
@@ -558,8 +558,9 @@ A `` string must use UNIX-style directory separators 
(forward
 slash `/`), may contain any byte other than `LF`, and must not
 start with double quote (`"`).
 
-If an `LF` or double quote must be encoded into `` shell-style
-quoting should be used, e.g. `"path/with\n and \" in it"`.
+If an `LF`, backslash or double quote must be encoded into ``
+shell-style quoting should be used, and the complete name should be
+surrounded with double quotes e.g. `"path/with\n, \\ and \" in it"`.
 
 The value of `` must be in canonical form. That is it must not:
 
-- 
1.8.0.319.g8abfee4

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


Re: [PATCH v2] If `egrep` is aliased, temporary disable it in bash.completion

2012-11-29 Thread Junio C Hamano
Adam Tkac  writes:

> Subject: Re: [PATCH v2] If `egrep` is aliased, temporary disable it in 
> bash.completion

The code does not seem to do anything special if it is not aliased,
though, so "If ..." part does not sound correct; perhaps you meant
"just in case egrep is aliased to something totally wacky" or
something?

The script seems to use commands other than 'egrep' that too can be
aliased to do whatever unexpected things.  How does this patch get
away without backslashing them all, like

\echo ...
\sed ...
\test ...
\: comment ...
\git args ...

and still fix problems for users?  Can't the same solution you would
give to users who alias one of the above to do something undesirable
be applied to those who alias egrep?

Puzzled...

> Originally reported as https://bugzilla.redhat.com/show_bug.cgi?id=863780
>
> Signed-off-by: Adam Tkac 
> Signed-off-by: Holger Arnold 
> ---
>  contrib/completion/git-completion.bash | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/contrib/completion/git-completion.bash 
> b/contrib/completion/git-completion.bash
> index 0960acc..79073c2 100644
> --- a/contrib/completion/git-completion.bash
> +++ b/contrib/completion/git-completion.bash
> @@ -565,7 +565,7 @@ __git_complete_strategy ()
>  __git_list_all_commands ()
>  {
>   local i IFS=" "$'\n'
> - for i in $(git help -a|egrep '^  [a-zA-Z0-9]')
> + for i in $(git help -a| \egrep '^  [a-zA-Z0-9]')
>   do
>   case $i in
>   *--*) : helper pattern;;
> -- 
> 1.8.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


[StGit PATCH] Include emacs and vim contribs in source tarball

2012-11-29 Thread Zane Bitter
This will enable downstream distros to package them.

Signed-off-by: Zane Bitter 
---
 MANIFEST.in |3 +++
 1 file changed, 3 insertions(+)

diff --git a/MANIFEST.in b/MANIFEST.in
index c94eef6..a80f013 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -9,6 +9,9 @@ include examples/gitconfig
 include contrib/*.sh
 include contrib/*.bash
 include contrib/stg-*
+include contrib/Makefile
+include contrib/stgit.el
+recursive-include contrib/vim *.vim
 include t/t*.sh t/t*/* t/Makefile t/README
 include Documentation/*.txt Documentation/Makefile Documentation/*.conf
 include Documentation/build-docdep.perl Documentation/callouts.xsl

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


Re: [PATCH v2] If `egrep` is aliased, temporary disable it in bash.completion

2012-11-29 Thread Junio C Hamano
Junio C Hamano  writes:

> Adam Tkac  writes:
>
>> Subject: Re: [PATCH v2] If `egrep` is aliased, temporary disable it in 
>> bash.completion
>
> The code does not seem to do anything special if it is not aliased,
> though, so "If ..." part does not sound correct; perhaps you meant
> "just in case egrep is aliased to something totally wacky" or
> something?
>
> The script seems to use commands other than 'egrep' that too can be
> aliased to do whatever unexpected things.  How does this patch get
> away without backslashing them all, like
>
>   \echo ...
> \sed ...
> \test ...
> \: comment ...
>   \git args ...
>
> and still fix problems for users?  Can't the same solution you would
> give to users who alias one of the above to do something undesirable
> be applied to those who alias egrep?
>
> Puzzled...

Sorry for having been more snarky than necessary (blame it to lack
of caffeine).  What I was trying to get at were:

 * I have this suspicion that this patch exists only because you saw
   somebody who aliases egrep to something unexpected by the use of
   it in this script, and egrep *happened* to be the only such
   "unreasonable" alias.  The reporter may not have aliased echo or
   sed away, or the aliases to these command *happened* to produce
   "acceptable" output (even though it might have been slightly
   different from unaliased one, the difference *happened* not to
   matter for the purpose of this script).

 * To the person who observes the same aliasing breakage due to his
   aliasing sed to something else, you would solve his problem by
   telling him "don't do that, then".  If that is the solution, why
   wouldn't it work for egrep?

 * The next person who aliased other commands this script uses in
   such a way that the behaviour of the alias differs sufficiently
   from the unaliased version, you will have to patch the file
   again, with the same backslashing.  This patch is not a solution,
   but a band-aid that only works for a particular case you
   *happened* to have seen.

 * A complete solution that follows the direction this patch
   suggests would involve backslashing *all* commands that can
   potentially aliased away.  Is that really the direction we would
   want to go in (answer: I doubt it)?  Is that the only approach to
   solve this aliasing issue (answer: I don't know, but we should
   try to pursue it before applying a band-aid that is not a
   solution)?

Is there a way to tell bash "do not alias-expand from here up to
there"?  Perhaps "shopt -u expand_aliases" upon entry and restore
its original value when we exit, or something?

IOW, something along this line?

 contrib/completion/git-completion.bash | 13 +
 1 file changed, 13 insertions(+)

diff --git i/contrib/completion/git-completion.bash 
w/contrib/completion/git-completion.bash
index 0b77eb1..193f53c 100644
--- i/contrib/completion/git-completion.bash
+++ w/contrib/completion/git-completion.bash
@@ -23,6 +23,14 @@
 #3) Consider changing your PS1 to also show the current branch,
 #   see git-prompt.sh for details.
 
+if shopt -q expand_aliases
+then
+   _git__aliases_were_enabled=yes
+else
+   _git__aliases_were_enabled=
+fi
+shopt -u expand_aliases
+
 case "$COMP_WORDBREAKS" in
 *:*) : great ;;
 *)   COMP_WORDBREAKS="$COMP_WORDBREAKS:"
@@ -2504,3 +2512,8 @@ __git_complete gitk __gitk_main
 if [ Cygwin = "$(uname -o 2>/dev/null)" ]; then
 __git_complete git.exe __git_main
 fi
+
+if test -n "$_git__aliases_were_enabled"
+then
+   shopt -s expand_aliases
+fi


--
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] t4049: avoid test failures on filemode challenged file systems (Windows)

2012-11-29 Thread Junio C Hamano
Junio C Hamano  writes:

> Johannes Sixt  writes:
>
>>> It turns out that there are at least two bugs in the diffstat
>>> counting code.  This series comes on top of the earlier 74faaa1 (Fix
>>> "git diff --stat" for interesting - but empty - file changes,
>>> 2012-10-17) to fix them.
>>
>> The tests still fail on Windows. I am not sure whether there is a
>> difference in comparing the file system against the index or a commit.
>> If there is, then the updated tests might not test the same thing.
>
> The hunks in the patch look fine.  The last one that tests unmerged
> entries do not have to have "chmod" if it gives you trouble (you
> would need to reduce number of files from 4 to 3 if you go that
> route, I think).

That is, something like this.

-- >8 --
Subject: [PATCH] t4049: refocus tests

The primary thing Linus's patch wanted to change was to make sure
that 0-line change appears for a mode-only change.  Update the
first test to chmod a file that we can see in the output (limited
by --stat-count) to demonstrate it.  Also make sure to use test_chmod
and compare the index and the tree, so that we can run this test
even on a filesystem without permission bits.

Later two tests are about fixes to separate issues that were
introduced and/or uncovered by Linus's patch as a side effect, but
the issues are not related to mode-only changes.  Remove chmod from
the tests.

Signed-off-by: Junio C Hamano 
---
 t/t4049-diff-stat-count.sh | 20 +---
 1 file changed, 9 insertions(+), 11 deletions(-)

diff --git a/t/t4049-diff-stat-count.sh b/t/t4049-diff-stat-count.sh
index 37f50cd..5b594e8 100755
--- a/t/t4049-diff-stat-count.sh
+++ b/t/t4049-diff-stat-count.sh
@@ -13,32 +13,31 @@ test_expect_success 'setup' '
git commit -m initial
 '
 
-test_expect_success 'limit output to 2 (simple)' '
+test_expect_success 'mode-only change show as a 0-line change' '
git reset --hard &&
-   chmod +x c d &&
+   test_chmod +x b d &&
echo a >a &&
-   echo b >b &&
+   echo c >c &&
cat >expect <<-\EOF
 a | 1 +
-b | 1 +
+b | 0
 ...
 4 files changed, 2 insertions(+)
EOF
-   git diff --stat --stat-count=2 >actual &&
+   git diff --stat --stat-count=2 HEAD >actual &&
test_i18ncmp expect actual
 '
 
 test_expect_success 'binary changes do not count in lines' '
git reset --hard &&
-   chmod +x c d &&
echo a >a &&
-   echo b >b &&
+   echo c >c &&
cat "$TEST_DIRECTORY"/test-binary-1.png >d &&
cat >expect <<-\EOF
 a | 1 +
-b | 1 +
+c | 1 +
 ...
-4 files changed, 2 insertions(+)
+3 files changed, 2 insertions(+)
EOF
git diff --stat --stat-count=2 >actual &&
test_i18ncmp expect actual
@@ -56,12 +55,11 @@ test_expect_success 'exclude unmerged entries from total 
file count' '
done |
git update-index --index-info &&
echo d >d &&
-   chmod +x c d &&
cat >expect <<-\EOF
 a | 1 +
 b | 1 +
 ...
-4 files changed, 3 insertions(+)
+3 files changed, 3 insertions(+)
EOF
git diff --stat --stat-count=2 >actual &&
test_i18ncmp expect actual
-- 
1.8.0.1.407.g3c58eb7


--
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] completion: fix warning for zsh

2012-11-29 Thread Junio C Hamano
Will apply directly on 'master'; 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 1/2] git-fast-import.txt: improve documentation for quoted paths

2012-11-29 Thread Jeff King
On Thu, Nov 29, 2012 at 06:00:54PM +0100, Matthieu Moy wrote:

> The documentation mentionned only newlines and double quotes as

s/nn/n/

> diff --git a/Documentation/git-fast-import.txt 
> b/Documentation/git-fast-import.txt
> index 6603a7a..35b909c 100644
> --- a/Documentation/git-fast-import.txt
> +++ b/Documentation/git-fast-import.txt
> @@ -558,8 +558,9 @@ A `` string must use UNIX-style directory 
> separators (forward
>  slash `/`), may contain any byte other than `LF`, and must not
>  start with double quote (`"`).
>  
> -If an `LF` or double quote must be encoded into `` shell-style
> -quoting should be used, e.g. `"path/with\n and \" in it"`.
> +If an `LF`, backslash or double quote must be encoded into ``
> +shell-style quoting should be used, and the complete name should be
> +surrounded with double quotes e.g. `"path/with\n, \\ and \" in it"`.

I think the point of the original is that you do not _need_ to quote
unless you have those two characters. IOW, you can do:

  M 100644 :1 file \with \backslashes

and it will stay in the "literal to the end of line" code path because
the path does not begin with a double-quote. It is only when you trigger
the "shell-style quoting" code path is in effect that you must then
follow the rules of that quoting (which includes escaping backslashes).
So technically, your modification to the beginning of the sentence is
not correct.

That being said, I think what you have written is more helpful to an end
user. There is no harm in quoting when we do not have to, as fast-import
implementations must know how to unquote anyway (and we over-quote in
fast-export in this case). And while the example above does work (and
was always designed to), it is sort of an unintuitive area that I would
not be surprised to see other fast-import implementations get wrong. As
a writer of a stream, it probably pays to be defensive and err on the
side of quoting more.

As for the text itself, a few minor punctuation suggestions:

> If an `LF`, backslash or double quote must be encoded
   ^
   missing comma as list delimiter

> into `` shell-style quoting should be used, and the complete
   ^
   missing comma in if/then clause

This one was in the original as well, but it makes it harder to read and
is worth fixing.

> surrounded with double quotes e.g. `"path/with\n, \\ and \" in it"`.

Should the parenthetical be in parentheses (or a separate sentence)?

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


Re: Ubuntu: gitweb always looks for projects in /var/cache/git (“404 - no projects found”)

2012-11-29 Thread Jeff King
On Thu, Nov 29, 2012 at 01:55:57PM +, Alfonso Muñoz-Pomer Fuentes wrote:

> I’ve discovered this weird behaviour in gitweb and documented a workaround in
> StackOverflow:
> http://stackoverflow.com/questions/13609475/ubuntu-gitweb-always-looks-for-projects-in-var-cache-git-404-no-projects-f
> 
> Basically, the variable $projectroot in gitweb.cgi in the beginning is reset 
> to
> the system default value in git_get_projects_list, when it is declared again.
> 
> Is this a known bug? Or am I missing something?

I think the analysis in that stack overflow post is wrong. The use of
"our" in git_get_projects_list is not the culprit.

The problem is that one should not edit gitweb.cgi directly; its
built-in defaults (which you are tweaking) are overridden by
/etc/gitweb.conf, which is shipped by the Ubuntu package. You should
be making your changes in the config file, not the CGI script.

-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


[RFC/PATCH 2/2] reset: learn to reset on unborn branch

2012-11-29 Thread Martin von Zweigbergk
When run on an unborn branch, "git reset" currently fails with:

  fatal: Failed to resolve 'HEAD' as a valid ref.

Fix this by interpreting it as a reset to the empty tree.

If --patch is given, we currently pass the revision specifier, as
given on the command line, to interactive_reset(). On an unborn
branch, HEAD can of course not be resolved, so we need to pass the
sha1 of the empty tree to interactive_reset() as well. This is fine
since interactive_reset only needs the parameter to be a treeish and
doesn't use it for display purposes.

---

Is it correct that interactive_reset does not use the revision
specifier for display purposes? Or, worse, that it requires it to be a
commit in some cases? I tried it and didn't see any problem.

 builtin/reset.c| 10 +---
 t/t7106-reset-unborn-branch.sh | 52 ++
 2 files changed, 59 insertions(+), 3 deletions(-)
 create mode 100755 t/t7106-reset-unborn-branch.sh

diff --git a/builtin/reset.c b/builtin/reset.c
index cec9874..3845225 100644
--- a/builtin/reset.c
+++ b/builtin/reset.c
@@ -229,7 +229,10 @@ static struct object *lookup_commit_or_tree(const char 
*rev) {
unsigned char sha1[20];
struct commit *commit;
struct tree *tree;
-   if (get_sha1_treeish(rev, sha1))
+   if (!strcmp(rev, "HEAD") && get_sha1("HEAD", sha1)) {
+   // unborn branch: reset to empty tree
+   hashcpy(sha1, EMPTY_TREE_SHA1_BIN);
+   } else if (get_sha1_treeish(rev, sha1))
die(_("Failed to resolve '%s' as a valid ref."), rev);
commit = lookup_commit_reference_gently(sha1, 1);
if (commit)
@@ -292,7 +295,8 @@ int cmd_reset(int argc, const char **argv, const char 
*prefix)
 * Otherwise, argv[i] could be either  or  and
 * has to be unambiguous.
 */
-   else if (!get_sha1_treeish(argv[i], sha1)) {
+   else if (!strcmp(argv[i], "HEAD") ||
+!get_sha1_treeish(argv[i], sha1)) {
/*
 * Ok, argv[i] looks like a rev; it should not
 * be a filename.
@@ -315,7 +319,7 @@ int cmd_reset(int argc, const char **argv, const char 
*prefix)
if (patch_mode) {
if (reset_type != NONE)
die(_("--patch is incompatible with 
--{hard,mixed,soft}"));
-   return interactive_reset(rev, argv + i, prefix);
+   return interactive_reset(sha1_to_hex(sha1), argv + i, prefix);
}
 
/* git reset tree [--] paths... can be used to
diff --git a/t/t7106-reset-unborn-branch.sh b/t/t7106-reset-unborn-branch.sh
new file mode 100755
index 000..67d45be
--- /dev/null
+++ b/t/t7106-reset-unborn-branch.sh
@@ -0,0 +1,52 @@
+#!/bin/sh
+
+test_description='git reset should work on unborn branch'
+. ./test-lib.sh
+
+test_expect_success 'setup' '
+   echo a >a &&
+   echo b >b
+'
+
+test_expect_success 'reset' '
+   git add a b &&
+   git reset &&
+   test "$(git ls-files)" == ""
+'
+
+test_expect_success 'reset HEAD' '
+   rm .git/index &&
+   git add a b &&
+   git reset HEAD &&
+   test "$(git ls-files)" == ""
+'
+
+test_expect_success 'reset $file' '
+   rm .git/index &&
+   git add a b &&
+   git reset a &&
+   test "$(git ls-files)" == "b"
+'
+
+test_expect_success 'reset -p' '
+   rm .git/index &&
+   git add a &&
+   echo y | git reset -p &&
+   test "$(git ls-files)" == ""
+'
+
+test_expect_success 'reset --soft not allowed' '
+   rm .git/index &&
+   git add a &&
+   test_must_fail git reset --soft
+'
+
+test_expect_success 'reset --hard' '
+   rm .git/index &&
+   git add a &&
+   git reset --hard &&
+   test "$(git ls-files)" == "" &&
+   test_path_is_missing a
+'
+
+test_done
-- 
1.8.0.1.240.ge8a1f5a

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


[RFC/PATCH 0/2] Fix "git reset" on unborn branch

2012-11-29 Thread Martin von Zweigbergk
I decided to address this before "cherry-pick on unborn branch". RFC
mostly because I'm not sure about the user interface. When we have
agreed on that, I will add documentation.

Martin von Zweigbergk (2):
  reset: learn to reset to tree
  reset: learn to reset on unborn branch

 builtin/reset.c | 73 ++---
 t/t1512-rev-parse-disambiguation.sh |  4 --
 t/t7102-reset.sh| 26 +
 t/t7106-reset-unborn-branch.sh  | 52 ++
 4 files changed, 122 insertions(+), 33 deletions(-)
 create mode 100755 t/t7106-reset-unborn-branch.sh

-- 
1.8.0.1.240.ge8a1f5a

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


[RFC/PATCH 1/2] reset: learn to reset to tree

2012-11-29 Thread Martin von Zweigbergk
In cases where HEAD is not supposed to be updated, there is no reason
that "git reset" should require a commit, a tree should be enough. So
make "git reset $rev^{tree}" work just like "git reset $rev", except
that the former will not update HEAD (since there is no commit to
point it to).

Disallow --soft with trees, since that is about updating only HEAD.

By not updating HEAD, "git reset $rev^{tree}" behaves quite like "git
reset $rev .". One might therefore consider requiring a path when
using reset with a tree to make that similarity more obvious. However,
a future commit will make "git reset" work on an unborn branch by
interpreting it as "git reset $empty_tree" and it would seem
unintuitive to the user to say "git reset ." on an unborn
branch. Requiring a path would also make "git reset --hard $tree"
disallowed.

This commit effectively undoes some of commit 13243c2 (reset: the
command takes committish, 2012-07-03). The command line argument is
now required to be an unambiguous treeish.

---

My implementation of lookup_commit_or_tree looks a little clunky. I'm
not very familiar with the API. Suggestions welcome.

Why is the "HEAD is now at ..." message printed only for --hard reset?
After all, HEAD is updated for all types of reset not involving paths.

 builtin/reset.c | 67 +
 t/t1512-rev-parse-disambiguation.sh |  4 ---
 t/t7102-reset.sh| 26 ++
 3 files changed, 65 insertions(+), 32 deletions(-)

diff --git a/builtin/reset.c b/builtin/reset.c
index 915cc9f..cec9874 100644
--- a/builtin/reset.c
+++ b/builtin/reset.c
@@ -225,6 +225,21 @@ static void die_if_unmerged_cache(int reset_type)
 
 }
 
+static struct object *lookup_commit_or_tree(const char *rev) {
+   unsigned char sha1[20];
+   struct commit *commit;
+   struct tree *tree;
+   if (get_sha1_treeish(rev, sha1))
+   die(_("Failed to resolve '%s' as a valid ref."), rev);
+   commit = lookup_commit_reference_gently(sha1, 1);
+   if (commit)
+   return (struct object *) commit;
+   tree = parse_tree_indirect(sha1);
+   if (tree)
+   return (struct object *) tree;
+   die(_("Could not parse object '%s'."), rev);
+}
+
 int cmd_reset(int argc, const char **argv, const char *prefix)
 {
int i = 0, reset_type = NONE, update_ref_status = 0, quiet = 0;
@@ -232,7 +247,8 @@ int cmd_reset(int argc, const char **argv, const char 
*prefix)
const char *rev = "HEAD";
unsigned char sha1[20], *orig = NULL, sha1_orig[20],
*old_orig = NULL, sha1_old_orig[20];
-   struct commit *commit;
+   struct object *object;
+   struct commit *commit = NULL;
struct strbuf msg = STRBUF_INIT;
const struct option options[] = {
OPT__QUIET(&quiet, N_("be quiet, only report errors")),
@@ -276,7 +292,7 @@ int cmd_reset(int argc, const char **argv, const char 
*prefix)
 * Otherwise, argv[i] could be either  or  and
 * has to be unambiguous.
 */
-   else if (!get_sha1_committish(argv[i], sha1)) {
+   else if (!get_sha1_treeish(argv[i], sha1)) {
/*
 * Ok, argv[i] looks like a rev; it should not
 * be a filename.
@@ -289,19 +305,12 @@ int cmd_reset(int argc, const char **argv, const char 
*prefix)
}
}
 
-   if (get_sha1_committish(rev, sha1))
-   die(_("Failed to resolve '%s' as a valid ref."), rev);
-
-   /*
-* NOTE: As "git reset $treeish -- $path" should be usable on
-* any tree-ish, this is not strictly correct. We are not
-* moving the HEAD to any commit; we are merely resetting the
-* entries in the index to that of a treeish.
-*/
-   commit = lookup_commit_reference(sha1);
-   if (!commit)
-   die(_("Could not parse object '%s'."), rev);
-   hashcpy(sha1, commit->object.sha1);
+   object = lookup_commit_or_tree(rev);
+   if (object->type == OBJ_COMMIT)
+   commit = (struct commit*) object;
+   else if (reset_type == SOFT)
+   die(_("--soft requires a commit, which '%s' is not"), rev);
+   hashcpy(sha1, object->sha1);
 
if (patch_mode) {
if (reset_type != NONE)
@@ -347,23 +356,25 @@ int cmd_reset(int argc, const char **argv, const char 
*prefix)
die(_("Could not reset index file to revision '%s'."), 
rev);
}
 
-   /* Any resets update HEAD to the head being switched to,
-* saving the previous head in ORIG_HEAD before. */
-   if (!get_sha1("ORIG_HEAD", sha1_old_orig))
-   old_orig = sha1_old_orig;
-   if (!get_sha1("HEAD", sha1_orig)) {
-   orig = sha1_orig;
-   set_reflog_message(&msg, "updating ORIG_HEAD", NULL);
-   u

Re: [RFC/PATCH 1/2] reset: learn to reset to tree

2012-11-29 Thread Junio C Hamano
Martin von Zweigbergk  writes:

> In cases where HEAD is not supposed to be updated, there is no reason
> that "git reset" should require a commit, a tree should be enough. So
> make "git reset $rev^{tree}" work just like "git reset $rev", except
> that the former will not update HEAD (since there is no commit to
> point it to).

That is a horrible design I have to nack, unless you require
pathspec.  You cannot tell what "git reset $sha1" would do without
checking the type of the object $sha1 refers to.  If you do this
only when pathspec is present, then the design is very reasonable.

> Disallow --soft with trees, since that is about updating only HEAD.

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


Re: [PATCH 1/2] git-fast-import.txt: improve documentation for quoted paths

2012-11-29 Thread Matthieu Moy
Jeff King  writes:

> So technically, your modification to the beginning of the sentence is
> not correct.

I'd say the resulting sentence is somehow incorrect, but not more than
the previous one (both say "if ..." without really telling what the
condition was).

>> If an `LF`, backslash or double quote must be encoded
>^
>missing comma as list delimiter

Google tells me that my version was UK-correct but not US-correct. As
french, I have no opinion on the subject, I take yours ;-).

How about this:

A path can use the C-style string quoting (this is accepted in all
cases and mandatory if the filename starts with double quote or
contains `LF`). In C-style quoting, `LF`, backslash, and double quote
characters must be escaped by preceding them with a backslash. Also,
the complete name should be surrounded with double quotes (e.g.
`"path/with\n, \\ and \" in it"`).

This should be technically correct, and "this is accepted in all cases"
should encourrage people to use it.

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/
--
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: Re: [PATCH v4 0/4] git-submodule add: Add --local-branch option

2012-11-29 Thread Phil Hord
On Tue, Nov 27, 2012 at 6:28 PM, Heiko Voigt  wrote:
>
> Hi,
>
> On Tue, Nov 27, 2012 at 02:01:05PM -0500, W. Trevor King wrote:
> > On Tue, Nov 27, 2012 at 07:31:25PM +0100, Heiko Voigt wrote:
> > The v4 series leaves the remote branch amigious, but it helps you
> > point the local branch at the right hash so that future calls to
> >
> >   $ git submodule foreach 'git pull'
> >
> > can use the branch's .git/modules//config settings.
>
> But IMO thats the functionality which should be implemented in submodule
> update and not left to the user.
>
> > > I would think more of some convention like:
> > >
> > > $ git checkout -t origin/$branch
> > >
> > > when first initialising the submodule with e.g.
> > >
> > > $ git submodule update --init --branch
> > >
> > > Then later calls of
> > >
> > > $ git submodule update --branch
> > >
> > > would have a branch configured to pull from. I imagine that results in
> > > a similar behavior gerrit is doing on the server side?
> >
> > That sounds like it's doing pretty much the same thing.  Can you think
> > of a test that would distinguish it from my current v4 implementation?
>
> Well the main difference is that gerrit is automatically updating the
> superproject AFAIK. I would like it if we could implement the same
> workflow support in the submodule script. It seems to me that this is
> already proven to be useful workflow.


It is proven in Gerrit, but Gerrit implements a central-server
workflow.  That is, only Gerrit ever floats the submodules, and he
pushes the result for everyone else to share.  I fear the consequences
of everyone pulling submodules and then later trying to merge
superprojects with someone else's breadcrumbs.

Do you have some idea how this would be handled?

Phil

ps. Apologies for my lateness on this topic. I'm trying to catch up now.

pps. Re-sent since Gmail has hidden the "plain text" option in a
different place, now.

On Tue, Nov 27, 2012 at 9:42 PM, W. Trevor King  wrote:
> On Wed, Nov 28, 2012 at 12:28:58AM +0100, Heiko Voigt wrote:
>> On Tue, Nov 27, 2012 at 02:01:05PM -0500, W. Trevor King wrote:
>> > On Tue, Nov 27, 2012 at 07:31:25PM +0100, Heiko Voigt wrote:
>> > The v4 series leaves the remote branch amigious, but it helps you
>> > point the local branch at the right hash so that future calls to
>> >
>> >   $ git submodule foreach 'git pull'
>> >
>> > can use the branch's .git/modules//config settings.
>>
>> But IMO thats the functionality which should be implemented in submodule
>> update and not left to the user.
>
> Then you might need submodule..local-branch,
> submodule..remote-repository, and submodule..remote-branch
> to configure
>
>   $ git checkout submodule..local-branch
>   $ git pull submodule..remote-repository submodule..remote-branch
>
> and this would ignore the $sha1 stored in the gitlink (which all of
> the other update commands use).  This ignoring-the-$sha1 bit made me
> think that a built-in pull wasn't a good fit for 'submodule update'.
> Maybe if it went into a new 'submodule pull'?  Then users have a clear
> distinction:
>
> * 'update' to push superproject $sha1 changes into the submodules
> * 'pull' to push upstream-branch changes into the submodules
>
>> > > I would think more of some convention like:
>> > >
>> > >   $ git checkout -t origin/$branch
>> > >
>> > > when first initialising the submodule with e.g.
>> > >
>> > >   $ git submodule update --init --branch
>> > >
>> > > Then later calls of
>> > >
>> > >   $ git submodule update --branch
>> > >
>> > > would have a branch configured to pull from. I imagine that results in
>> > > a similar behavior gerrit is doing on the server side?
>> >
>> > That sounds like it's doing pretty much the same thing.  Can you think
>> > of a test that would distinguish it from my current v4 implementation?
>>
>> Well the main difference is that gerrit is automatically updating the
>> superproject AFAIK. I would like it if we could implement the same
>> workflow support in the submodule script. It seems to me that this is
>> already proven to be useful workflow.
>
> Ah, sorry, I meant the configuring which remote branch you were
> pulling from happens at submodule initialization (via .git/modules/…)
> for both your workflow and my v4.
>
> You're right that having a builtin pull is different from my v4.
>
>> https://github.com/hvoigt/git/commits/hv/floating_submodules_draft
>
> I looked over this before, but maybe not thoroughly enough ;).
>
>> > > How about reusing the -b|--branch option for add? Since we only change
>> > > the behavior when submodule.$name.update is set to branch it seems
>> > > reasonable to me. Opinions?
>> >
>> > That was the approach I used in v1, but people were concerned that we
>> > would be stomping on previously unclaimed config space.  Since noone
>> > has pointed out other uses besides Gerrit's very similar case, I'm not
>> > sure if that is still an issue.
>>
>> Could you point me to that mail? I cannot seem to find it in my arc

Re: [PATCH 1/2] git-fast-import.txt: improve documentation for quoted paths

2012-11-29 Thread Jeff King
On Thu, Nov 29, 2012 at 07:47:32PM +0100, Matthieu Moy wrote:

> Jeff King  writes:
> 
> > So technically, your modification to the beginning of the sentence is
> > not correct.
> 
> I'd say the resulting sentence is somehow incorrect, but not more than
> the previous one (both say "if ..." without really telling what the
> condition was).

That's fair. There is a lot left unsaid in the original. :)

> >> If an `LF`, backslash or double quote must be encoded
> >^
> >missing comma as list delimiter
> 
> Google tells me that my version was UK-correct but not US-correct. As
> french, I have no opinion on the subject, I take yours ;-).

Thanks, I had a vague recollection that it might be regional. I probably
should have looked it up myself.

> How about this:
> 
> A path can use the C-style string quoting (this is accepted in all
> cases and mandatory if the filename starts with double quote or
> contains `LF`). In C-style quoting, `LF`, backslash, and double quote
> characters must be escaped by preceding them with a backslash. Also,
> the complete name should be surrounded with double quotes (e.g.
> `"path/with\n, \\ and \" in it"`).
> 
> This should be technically correct, and "this is accepted in all cases"
> should encourrage people to use it.

I think that is much better, but it reads a little more easily to me if
we rearrange the second sentence. To complete my English bikeshedding,
here is how I would have written the whole paragraph:

  A path can use C-style string quoting; this is accepted in all cases
  and mandatory if the filename starts with double quote or contains
  `LF`. In C-style quoting, the complete name should be surrounded with
  double quotes, and any `LF`, backslash, or double quote characters
  must be escaped by preceding them with a backslash (e.g.,
  `"path/with\n, \\ and \" in it"`).

Feel free to incorporate or ignore any of my tweaks from that version.

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


Re: Millisecond precision in timestamps?

2012-11-29 Thread Eric S. Raymond
Junio C Hamano :
> That is exactly why I said it is all relative.  If it helps your
> application, you can weigh the pros-and-cons yourself and choose to
> throw "junk" extended header fields in the commit objects you
> create, using hash-object (or commit-tree).  You can read it out
> using cat-file and do whatever you want to do with it, and modern
> Git (v1.5.0 was from early 2007) and tools that are designed to work
> with Git know to ignore such "junk" field.

A good start.  But remember that reposurgeon's entire interface to the
git object level is through fast-export/fast-import.  I need import-
stream syntax for these.

bzr's syntax would do:

---
mark :1
committer Eric S. Raymond  1289147634 -0500
data 14
First commit.

property branch-nick 12 bzr-testrepo
M 644 inline README
data 41
This is a test file in a dummy bzr repo.
---

If we actually care about keys being full utf-8 with embedded whitespace
it should look more like this:

---
mark :1
committer Eric S. Raymond  1289147634 -0500
data 14
First commit.

property 11
branch-nick
propval 12 
bzr-testrepo
M 644 inline README
data 41
This is a test file in a dummy bzr repo.
---
-- 
http://www.catb.org/~esr/";>Eric S. Raymond
--
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 1/2] reset: learn to reset to tree

2012-11-29 Thread Martin von Zweigbergk
On Thu, Nov 29, 2012 at 10:47 AM, Junio C Hamano  wrote:
> Martin von Zweigbergk  writes:
>
>> In cases where HEAD is not supposed to be updated, there is no reason
>> that "git reset" should require a commit, a tree should be enough. So
>> make "git reset $rev^{tree}" work just like "git reset $rev", except
>> that the former will not update HEAD (since there is no commit to
>> point it to).
>
> That is a horrible design I have to nack, unless you require
> pathspec.  You cannot tell what "git reset $sha1" would do without
> checking the type of the object $sha1 refers to.  If you do this
> only when pathspec is present, then the design is very reasonable.

Very good point. Thanks! I now see that "git checkout" also requires a
path when given a tree.

So then "git reset" on an unborn branch would imply "git reset
$empty_tree -- ." instead. And "git reset --hard $tree" would not be
allowed. And the intersection of these -- "git reset --hard" on and
unborn branch -- would also not work. Would the correct fix be to
first make "git reset --hard -- $path" work (*sigh*)? I have never
understood why that doesn't (shouldn't) work.
--
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 v3] git-fast-import.txt: improve documentation for quoted paths

2012-11-29 Thread Matthieu Moy
The documentation mentionned only newlines and double quotes as
characters needing escaping, but the backslash also needs it. Also, the
documentation was not clearly saying that double quotes around the file
name were required (double quotes in the examples could be interpreted as
part of the sentence, not part of the actual string).

Signed-off-by: Matthieu Moy 
---
cut-and-paste of Peff's version, adapted from mine.

 Documentation/git-fast-import.txt | 8 ++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/Documentation/git-fast-import.txt 
b/Documentation/git-fast-import.txt
index 959e4d3..d1844ea 100644
--- a/Documentation/git-fast-import.txt
+++ b/Documentation/git-fast-import.txt
@@ -562,8 +562,12 @@ A `` string must use UNIX-style directory separators 
(forward
 slash `/`), may contain any byte other than `LF`, and must not
 start with double quote (`"`).
 
-If an `LF` or double quote must be encoded into `` shell-style
-quoting should be used, e.g. `"path/with\n and \" in it"`.
+A path can use C-style string quoting; this is accepted in all cases
+and mandatory if the filename starts with double quote or contains
+`LF`. In C-style quoting, the complete name should be surrounded with
+double quotes, and any `LF`, backslash, or double quote characters
+must be escaped by preceding them with a backslash (e.g.,
+`"path/with\n, \\ and \" in it"`).
 
 The value of `` must be in canonical form. That is it must not:
 
-- 
1.8.0.319.g8abfee4

--
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 v3] git-remote-mediawiki: escape ", \, and LF in file names

2012-11-29 Thread Matthieu Moy
A mediawiki page can contain, and even start with a " character, we have
to escape it when generating the fast-export stream, as well as \
character. While we're there, also escape newlines, but I don't think we
can get them from MediaWiki pages.

Signed-off-by: Matthieu Moy 
---
 contrib/mw-to-git/git-remote-mediawiki  | 16 +---
 contrib/mw-to-git/t/t9362-mw-to-git-utf8.sh | 26 ++
 2 files changed, 39 insertions(+), 3 deletions(-)

diff --git a/contrib/mw-to-git/git-remote-mediawiki 
b/contrib/mw-to-git/git-remote-mediawiki
index 68555d4..094129d 100755
--- a/contrib/mw-to-git/git-remote-mediawiki
+++ b/contrib/mw-to-git/git-remote-mediawiki
@@ -711,6 +711,14 @@ sub fetch_mw_revisions {
return ($n, @revisions);
 }
 
+sub fe_escape_path {
+my $path = shift;
+$path =~ s/\\//g;
+$path =~ s/"/\\"/g;
+$path =~ s/\n/\\n/g;
+return '"' . $path . '"';
+}
+
 sub import_file_revision {
my $commit = shift;
my %commit = %{$commit};
@@ -738,15 +746,17 @@ sub import_file_revision {
print STDOUT "from refs/mediawiki/$remotename/master^0\n";
}
if ($content ne DELETED_CONTENT) {
-   print STDOUT "M 644 inline $title.mw\n";
+   print STDOUT "M 644 inline " .
+   fe_escape_path($title . ".mw") . "\n";
literal_data($content);
if (%mediafile) {
-   print STDOUT "M 644 inline $mediafile{title}\n";
+   print STDOUT "M 644 inline "
+   . fe_escape_path($mediafile{title}) . "\n";
literal_data_raw($mediafile{content});
}
print STDOUT "\n\n";
} else {
-   print STDOUT "D $title.mw\n";
+   print STDOUT "D " . fe_escape_path($title . ".mw") . "\n";
}
 
# mediawiki revision number in the git note
diff --git a/contrib/mw-to-git/t/t9362-mw-to-git-utf8.sh 
b/contrib/mw-to-git/t/t9362-mw-to-git-utf8.sh
index 246d47d..b6405ce 100755
--- a/contrib/mw-to-git/t/t9362-mw-to-git-utf8.sh
+++ b/contrib/mw-to-git/t/t9362-mw-to-git-utf8.sh
@@ -318,4 +318,30 @@ test_expect_success 'git push with \ in format control' '
 '
 
 
+test_expect_success 'fast-import meta-characters in page name (mw -> git)' '
+   wiki_reset &&
+   wiki_editpage \"file\"_\\_foo "expect to be called \"file\"_\\_foo" 
false &&
+   git clone mediawiki::'"$WIKI_URL"' mw_dir_21 &&
+   test_path_is_file mw_dir_21/\"file\"_\\_foo.mw &&
+   wiki_getallpage ref_page_21 &&
+   test_diff_directories mw_dir_21 ref_page_21
+'
+
+
+test_expect_success 'fast-import meta-characters in page name (git -> mw) ' '
+   wiki_reset &&
+   git clone mediawiki::'"$WIKI_URL"' mw_dir_22 &&
+   (
+   cd mw_dir_22 &&
+   echo "this file is called \"file\"_\\_foo.mw" >\"file\"_\\_foo 
&&
+   git add . &&
+   git commit -am "file \"file\"_\\_foo" &&
+   git pull &&
+   git push
+   ) &&
+   wiki_getallpage ref_page_22 &&
+   test_diff_directories mw_dir_22 ref_page_22
+'
+
+
 test_done
-- 
1.8.0.319.g8abfee4

--
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 1/2] reset: learn to reset to tree

2012-11-29 Thread Junio C Hamano
Junio C Hamano  writes:

> Martin von Zweigbergk  writes:
>
>> In cases where HEAD is not supposed to be updated, there is no reason
>> that "git reset" should require a commit, a tree should be enough. So
>> make "git reset $rev^{tree}" work just like "git reset $rev", except
>> that the former will not update HEAD (since there is no commit to
>> point it to).
>
> That is a horrible design I have to nack, unless you require
> pathspec.  You cannot tell what "git reset $sha1" would do without
> checking the type of the object $sha1 refers to.  If you do this
> only when pathspec is present, then the design is very reasonable.

The above applies to an _arbitrary_ $sha1.

Allowing "reset $tree -- $pathspec" is a very good addition in the
same sense that "git checkout $tree -- $pathspec" is useful.  These
two commands, "reset" and "checkout", share that the source we grab
the blobs out of only need to be a tree and does not have to be a
commit, and the only difference between them is where the blobs we
grabbed out of that tree go, either only to the index or to both the
index and the working tree.

But I do not think it is connected, at least at the level the end
users perceive, to the issue of "reset" issued while on an unborn
branch.

If you limit the scope of the behaviour change exposed to the end
users so that you would make

$ git reset [HEAD]

act as a short-hand for

$ rm -f $GIT_DIR/index

when HEAD points at an unborn branch, and similarly make

$ git reset --hard [HEAD]

act as a short-hand for

$ rm -f $GIT_DIR/index
$ git clean -f -d

in such a case, I do not think it is unreasonable at all.

In such a case,

$ git reset --soft [HEAD]

would become just a no-op.  Earlier you were on an unborn branch,
and after "reset --soft", nothing changes.

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


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

2012-11-29 Thread W. Trevor King

On Thu, Nov 29, 2012 at 01:29:12PM -0500, Phil Hord wrote:
> On Fri, Nov 23, 2012 at 12:54 PM, W. Trevor King  wrote:
> > [snip initial thoughts leading to the update --remote v5]
>
> I was thinking the same thing, but reading this whole thread a couple of
> weeks late.  Thanks for noticing.
> 
> Moreover, I think that 'git submodule update --pull' is also the wrong way
> to spell this action.   Maybe you are misled from the outset by your
> current workflow:

Did you see my v5 (add --remote) series?

> For that reason, I don't like the --pull switch since it implies a
> fetch, but I will not always want to do a fetch.

  $ git submodule update --remote --no-fetch

will not fetch the submodule remotes.

> I don't know which remote I should be tracking, though.  I suppose
> it is 'origin' for now, but maybe it is just whatever
> $superproject's HEAD's remote-tracking branch indicates.

With the --remote series, I always use "origin" because that's what
`submodule add` should be setting up.  If people want to change that
up by hand, we may need a submodule..remote configuration
option.

> I am not sure I want the gitlinks in superproject to update automatically
> in the index, but I definitely do not want to automatically create a commit
> for them.

Commits are dissabled by default (see my recent --commit RFC for how
they would be enabled).

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

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


signature.asc
Description: OpenPGP digital signature


Re: Millisecond precision in timestamps?

2012-11-29 Thread Phil Hord
On Wed, Nov 28, 2012 at 2:29 AM, Junio C Hamano  wrote:
> Jeff King  writes:
>
>> There is room for new headers, and older versions of git will ignore
>> them. You could add a new "committer-timestamp" field that elaborates on
>> the timestamp included on the committer line. Newer versions of git
>> would respect it, and older versions would fall back to using the
>> committer timestamp.
>>
>> But I really wonder if anybody actually cares about adding sub-second
>> timestamp support, or if it is merely "because SVN has it".
>
> Roundtrip conversions may benefit from sub-second timestamps, but
> personally I think negative timestamps are more interesting and of
> practical use.  Prehistoric projects need them even if they intend
> to switch to Git, never to go back to their original tarballs and
> collection of RCS ,v files.
>
> And if we were to add "committer-timestamp" and friends to support
> negative timestamps anyway (because older tools will not support
> them), supporting sub-second part might be something we want to
> think about at the same time.

Posix-time is signed, but I suppose the git tools do not expect/allow
a '-' character in the stream.  Has git considered the year-2038
problem?

No hurry...

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


Re: [PATCH 1/2] git-fast-import.txt: improve documentation for quoted paths

2012-11-29 Thread Junio C Hamano
Jeff King  writes:

> On Thu, Nov 29, 2012 at 06:00:54PM +0100, Matthieu Moy wrote:
>
>> The documentation mentionned only newlines and double quotes as
>
> s/nn/n/
>
>> diff --git a/Documentation/git-fast-import.txt 
>> b/Documentation/git-fast-import.txt
>> index 6603a7a..35b909c 100644
>> --- a/Documentation/git-fast-import.txt
>> +++ b/Documentation/git-fast-import.txt
>> @@ -558,8 +558,9 @@ A `` string must use UNIX-style directory 
>> separators (forward
>>  slash `/`), may contain any byte other than `LF`, and must not
>>  start with double quote (`"`).
>>  
>> -If an `LF` or double quote must be encoded into `` shell-style
>> -quoting should be used, e.g. `"path/with\n and \" in it"`.
>> +If an `LF`, backslash or double quote must be encoded into ``
>> +shell-style quoting should be used, and the complete name should be
>> +surrounded with double quotes e.g. `"path/with\n, \\ and \" in it"`.

That "shell-style" contradicts with what fast-import.c says, though.
It claims to grok \octal and described as C-style.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/2] git-fast-import.txt: improve documentation for quoted paths

2012-11-29 Thread Jeff King
On Thu, Nov 29, 2012 at 11:15:56AM -0800, Junio C Hamano wrote:

> >> -If an `LF` or double quote must be encoded into `` shell-style
> >> -quoting should be used, e.g. `"path/with\n and \" in it"`.
> >> +If an `LF`, backslash or double quote must be encoded into ``
> >> +shell-style quoting should be used, and the complete name should be
> >> +surrounded with double quotes e.g. `"path/with\n, \\ and \" in it"`.
> 
> That "shell-style" contradicts with what fast-import.c says, though.
> It claims to grok \octal and described as C-style.

Yeah, I think it was just laziness by the original author to use
"shell-style" to mean "quotes and backslash escaping" without thinking
too hard about which escape sequences are available. Saying C-style is
more accurate (and Matthieu's more recent update does that).

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


Re: [PATCH 1/2 v3] git-fast-import.txt: improve documentation for quoted paths

2012-11-29 Thread Junio C Hamano
Matthieu Moy  writes:

> The documentation mentionned only newlines and double quotes as
> characters needing escaping, but the backslash also needs it. Also, the
> documentation was not clearly saying that double quotes around the file
> name were required (double quotes in the examples could be interpreted as
> part of the sentence, not part of the actual string).
>
> Signed-off-by: Matthieu Moy 
> ---
> cut-and-paste of Peff's version, adapted from mine.
>
>  Documentation/git-fast-import.txt | 8 ++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/Documentation/git-fast-import.txt 
> b/Documentation/git-fast-import.txt
> index 959e4d3..d1844ea 100644
> --- a/Documentation/git-fast-import.txt
> +++ b/Documentation/git-fast-import.txt
> @@ -562,8 +562,12 @@ A `` string must use UNIX-style directory 
> separators (forward
>  slash `/`), may contain any byte other than `LF`, and must not
>  start with double quote (`"`).
>  
> -If an `LF` or double quote must be encoded into `` shell-style
> -quoting should be used, e.g. `"path/with\n and \" in it"`.
> +A path can use C-style string quoting; this is accepted in all cases
> +and mandatory if the filename starts with double quote or contains
> +`LF`.

... or backslash?

> +In C-style quoting, the complete name should be surrounded with
> +double quotes, and any `LF`, backslash, or double quote characters
> +must be escaped by preceding them with a backslash (e.g.,
> +`"path/with\n, \\ and \" in it"`).
>  
>  The value of `` must be in canonical form. That is it must not:
--
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 1/2] reset: learn to reset to tree

2012-11-29 Thread Junio C Hamano
Martin von Zweigbergk  writes:

> Would the correct fix be to
> first make "git reset --hard -- $path" work (*sigh*)? I have never
> understood why that doesn't (shouldn't) work.

What does it even mean, even when you are on an existing commit, to
hard reset partially?

Perhaps you looking for "git checkout $tree -- $path"?

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


Re: [PATCH 1/2 v3] git-fast-import.txt: improve documentation for quoted paths

2012-11-29 Thread Jeff King
On Thu, Nov 29, 2012 at 11:33:19AM -0800, Junio C Hamano wrote:

> > diff --git a/Documentation/git-fast-import.txt 
> > b/Documentation/git-fast-import.txt
> > index 959e4d3..d1844ea 100644
> > --- a/Documentation/git-fast-import.txt
> > +++ b/Documentation/git-fast-import.txt
> > @@ -562,8 +562,12 @@ A `` string must use UNIX-style directory 
> > separators (forward
> >  slash `/`), may contain any byte other than `LF`, and must not
> >  start with double quote (`"`).
> >  
> > -If an `LF` or double quote must be encoded into `` shell-style
> > -quoting should be used, e.g. `"path/with\n and \" in it"`.
> > +A path can use C-style string quoting; this is accepted in all cases
> > +and mandatory if the filename starts with double quote or contains
> > +`LF`.
> 
> ... or backslash?

No, that was what we discussed elsewhere in the thread. It is OK to say:

  M 100644 :1 file \with \backslashes

as de-quoting is triggered by the first character being double-quote.

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


Re: Millisecond precision in timestamps?

2012-11-29 Thread Jeff King
On Thu, Nov 29, 2012 at 02:14:40PM -0500, Phil Hord wrote:

> > And if we were to add "committer-timestamp" and friends to support
> > negative timestamps anyway (because older tools will not support
> > them), supporting sub-second part might be something we want to
> > think about at the same time.
> 
> Posix-time is signed, but I suppose the git tools do not expect/allow
> a '-' character in the stream.  Has git considered the year-2038
> problem?

Yes. The timestamp is in base-10 ASCII, so there is no Y2038 problem in
the data format (it is up to the implementation to read it into a
sufficiently large time_t internally, of course[1]).

But negative timestamps are a different story. We use "unsigned long"
internally for timestamps, and fsck will complain about it.

-Peff

[1] We use "unsigned long", which means we are Y2038-fine on I32/LP64
systems, but not on 32-bit or IL32/LLP64 systems. I do not use
Windows, but my understanding is that LLP64 is the norm there, so it
would eventually be a problem. But since we are unsigned, it is
actually a Y2106 problem.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] t4049: avoid test failures on filemode challenged file systems (Windows)

2012-11-29 Thread Junio C Hamano
Junio C Hamano  writes:

> Junio C Hamano  writes:
>> ...
>> The hunks in the patch look fine.  The last one that tests unmerged
>> entries do not have to have "chmod" if it gives you trouble (you
>> would need to reduce number of files from 4 to 3 if you go that
>> route, I think).
>
> That is, something like this.

I've tested this with the testpen set on vfat mounted on my Linux
box, i.e.

$ cd t
$ sh t4049-diff-stat-count.sh --root=/media/5599-553B/test -v

and it seems to work OK, so I'll be merging the topic with this
patch to 'master' later today.

Thanks for noticing.

> -- >8 --
> Subject: [PATCH] t4049: refocus tests
>
> The primary thing Linus's patch wanted to change was to make sure
> that 0-line change appears for a mode-only change.  Update the
> first test to chmod a file that we can see in the output (limited
> by --stat-count) to demonstrate it.  Also make sure to use test_chmod
> and compare the index and the tree, so that we can run this test
> even on a filesystem without permission bits.
>
> Later two tests are about fixes to separate issues that were
> introduced and/or uncovered by Linus's patch as a side effect, but
> the issues are not related to mode-only changes.  Remove chmod from
> the tests.
>
> Signed-off-by: Junio C Hamano 
> ---
>  t/t4049-diff-stat-count.sh | 20 +---
>  1 file changed, 9 insertions(+), 11 deletions(-)
>
> diff --git a/t/t4049-diff-stat-count.sh b/t/t4049-diff-stat-count.sh
> index 37f50cd..5b594e8 100755
> --- a/t/t4049-diff-stat-count.sh
> +++ b/t/t4049-diff-stat-count.sh
> @@ -13,32 +13,31 @@ test_expect_success 'setup' '
>   git commit -m initial
>  '
>  
> -test_expect_success 'limit output to 2 (simple)' '
> +test_expect_success 'mode-only change show as a 0-line change' '
>   git reset --hard &&
> - chmod +x c d &&
> + test_chmod +x b d &&
>   echo a >a &&
> - echo b >b &&
> + echo c >c &&
>   cat >expect <<-\EOF
>a | 1 +
> -  b | 1 +
> +  b | 0
>...
>4 files changed, 2 insertions(+)
>   EOF
> - git diff --stat --stat-count=2 >actual &&
> + git diff --stat --stat-count=2 HEAD >actual &&
>   test_i18ncmp expect actual
>  '
>  
>  test_expect_success 'binary changes do not count in lines' '
>   git reset --hard &&
> - chmod +x c d &&
>   echo a >a &&
> - echo b >b &&
> + echo c >c &&
>   cat "$TEST_DIRECTORY"/test-binary-1.png >d &&
>   cat >expect <<-\EOF
>a | 1 +
> -  b | 1 +
> +  c | 1 +
>...
> -  4 files changed, 2 insertions(+)
> +  3 files changed, 2 insertions(+)
>   EOF
>   git diff --stat --stat-count=2 >actual &&
>   test_i18ncmp expect actual
> @@ -56,12 +55,11 @@ test_expect_success 'exclude unmerged entries from total 
> file count' '
>   done |
>   git update-index --index-info &&
>   echo d >d &&
> - chmod +x c d &&
>   cat >expect <<-\EOF
>a | 1 +
>b | 1 +
>...
> -  4 files changed, 3 insertions(+)
> +  3 files changed, 3 insertions(+)
>   EOF
>   git diff --stat --stat-count=2 >actual &&
>   test_i18ncmp expect actual
--
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] gitweb: git_summary - show $project in title

2012-11-29 Thread Xypron
Thank you for your comments. In the appended version of the patch
the project title is escaped:

Subject: [PATCH] gitweb: git_summary - show $project in title

Gitweb pages are structured by divs of class title with grey background.
The shortlog, and the log page show the project name as the first title.
Page summary only shows an empty grey box above the project details.
This provides an inconsistent user experience.

Signed-off-by: Heinrich Schuchardt 
---
 gitweb/gitweb.perl |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index e8812fa..be94b0b 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -6450,7 +6450,7 @@ sub git_summary {
git_header_html();
git_print_page_nav('summary','', $head);
 
-   print " \n";
+   print "" . esc_html($project) . "\n";
print "\n" .
"description" . 
esc_html($descr) . "\n";
 unless ($omit_owner) {
-- 
1.7.10.4


On 13.11.2012 01:46, Junio C Hamano wrote:
> Jeff King  writes:
>
>> On Sun, Nov 11, 2012 at 06:20:58AM +0100, Henrich Schuchardt wrote:
>>
>>> Gitweb pages are structured by divs of class title with grey background.
>>> The shortlog, and the log page show the project name as the first title.
>>> Page summary only shows an empty grey box above the project details.
>>> This provides an inconstent user experience.
>>>
>>> This patch adds the missing project title.
>>>
>>> Signed-off-by: Henrich Schuchardt 
>>> ---
>>>  gitweb/gitweb.perl |2 +-
>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
>>> index 10ed9e5..3e1c452 100755
>>> --- a/gitweb/gitweb.perl
>>> +++ b/gitweb/gitweb.perl
>>> @@ -6451,7 +6451,7 @@ sub git_summary {
>>> git_header_html();
>>> git_print_page_nav('summary','', $head);
>>>  
>>> -   print " \n";
>>> +   print "$project\n";
>> I do not have any opinion on whether the intent of the change is good or
>> not, but shouldn't $project be run through esc_html() here?
> I think the answer is yes.  And if $project needs to be escaped, the
> git_feed function you fixed today has another codepath that needs to
> be fixed.  When git_get_project_description($project) returns undef,
> the description is taken from $project without any escaping.
>
>
>

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


Re: [PATCH 6/8] imap-send: change msg_data from storing (char *, len) to storing strbuf

2012-11-29 Thread Junio C Hamano
Michael Haggerty  writes:

> struct msg_data stored (char *, len) of the data to be included in a

That (, ) is a bit funny notation, even though it is
understandable.

> message, kept the character data NUL-terminated, etc., much like a
> strbuf would do.  So change it to use a struct strbuf.  This makes the
> code clearer and reduces copying a little bit.
>
> A side effect of this change is that the memory for each message is
> freed after it is used rather than leaked, though that detail is
> unimportant given that imap-send is a top-level command.
>
> --

?

> For some reason, there is a bunch of infrastructure in this file for
> dealing with IMAP flags, although there is nothing in the code that
> actually allows any flags to be set.  If there is no plan to add
> support for flags in the future, a bunch of code could be ripped out
> and "struct msg_data" could be completely replaced with strbuf.

Yeah, after all these years we have kept the unused flags field
there and nobody needed anything out of it.  I am OK with a removal
if it is done at the very end of the 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


Re: [PATCH 0/8] Add function strbuf_addstr_xml_quoted() and more

2012-11-29 Thread Junio C Hamano
Michael Haggerty  writes:

> There were two functions doing almost the same XML quoting of
> character entities, so implement a library function
> strbuf_addstr_xml_quoted() and use that in both places.
>
> Along the way, do a lot of simplification within imap-send.c, which
> was doing a lot of its own string management instead of using strbuf.

Overall the series looked good to me.  Thanks; will queue.
--
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 1/2] reset: learn to reset to tree

2012-11-29 Thread Martin von Zweigbergk
On Thu, Nov 29, 2012 at 11:13 AM, Junio C Hamano  wrote:
> [...]These
> two commands, "reset" and "checkout", share that the source we grab
> the blobs out of only need to be a tree and does not have to be a
> commit, and the only difference between them is where the blobs we
> grabbed out of that tree go, either only to the index or to both the
> index and the working tree.

Slightly off topic, but another difference (or somehow another aspect
of the same difference?) that has tripped me up a few times is that
"git checkout $rev ." only affects added and modified files (in $rev
compared to HEAD), but "git reset $rev ." would also delete deleted
files from the index. I suppose this is also a partial answer to your
question in another message:

> What does it even mean, even when you are on an existing commit, to
> hard reset partially?
>
> Perhaps you looking for "git checkout $tree -- $path"?

A more direct answer would be that I would expect "git reset --hard
$rev -- ." to behave like "git reset --hard $rev", except that it
wouldn't update HEAD. It seems to me that that would be similar to how
"git reset $rev -- ." behaves like "git reset $rev", except that it
doesn't update HEAD. But reset and checkout with and without paths
still confuse me after years of using git, so I wouldn't be surprised
if I'm not making any 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: [PATCH] gitweb: add readme to overview page

2012-11-29 Thread Xypron
Hello Junio,

thank you for your comment in message
<7vip9ak971@alter.siamese.dyndns.org>
that message <1352652039-31453-1-git-send-email-xypron.g...@gmx.de>
lost the thread context.

As already described I would be happy if a README.html could be added to
the overview page of gitweb.

Please, find below an updated patch. Compared to the first version of my
patch it avoids a warning concerning doubled slashes in filenames and adds
a subtitle "projects" between the README and the project list.

Best regards

Heinrich Schuchardt

Subject: [PATCH] gitweb: add readme to overview page

For repositories it is possible to maintain a README.html which will
be shown on the summary page. This is not possible for the server
root.

German law requires to provide contact data on the web server. This
data could easily be entered in the overview page using a README.html.

Furthermore it is possible to put the repositories not directly into
the root directory but into a subdirectory. Here also a README.html
would be helpful to indicate what the subdirectory is about.

The patch introduces README.html functionality for the root directory
and all subdirectories.

Signed-off-by: Heinrich Schuchardt 
---
 gitweb/gitweb.perl |   13 +
 1 file changed, 13 insertions(+)

diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index e8812fa..618b0d8 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -6368,6 +6368,19 @@ sub git_project_list {
}
 
git_project_search_form($searchtext, $search_use_regexp);
+   # If XSS prevention is on, we don't include README.html.
+   # TODO: Allow a readme in some safe format.
+   my $path = "";
+   if (defined $project_filter) {
+   $path = "/$project_filter";
+   }
+   if (!$prevent_xss && -s "$projectroot$path/README.html") {
+   print "readme\n" .
+   "\n";
+   insert_file("$projectroot$path/README.html");
+   print "\n\n"; # class="readme"
+   }
+   print "projects\n";
git_project_list_body(\@list, $order);
git_footer_html();
 }
-- 
1.7.10.4



--
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-11-29 Thread Thomas Rast
Hi Ralf

Here is the final third of my review.

>  #: builtin/prune-packed.c:7
>  msgid "git prune-packed [-n|--dry-run] [-q|--quiet]"
> -msgstr ""
> +msgstr "git prune-packed [-n|--dry-run] [-q|--quite]"
 ^
typo at the far end

>  #: builtin/prune.c:133
> -#, fuzzy
>  msgid "report pruned objects"
> -msgstr "kann Objekt %s nicht lesen"
> +msgstr "meldet entfernte Objekte"

If you translate "pruned" as "gelöscht" or some such, that avoids the
ambiguity with "remote".

>  #: builtin/prune.c:136
>  msgid "expire objects older than "
> -msgstr ""
> +msgstr "lässt Objekte älter als  verfallen"

"verfallen" is nice!

>  #: builtin/push.c:391
>  msgid "check"
> -msgstr ""
> +msgstr "Überprüfung"

I think the original string should not be translatable to begin with.
The manpage says

  --recurse-submodules=check|on-demand
  Make sure all submodule commits used by the revisions to be pushed
  are available on a remote tracking branch. If *check* is used git
  will verify that all submodule commits that changed in the
  revisions to be pushed are available on at least one remote of the
  submodule. If any commits are missing the push will be aborted and
  exit with non-zero status. If *on-demand* is used all submodules
  that changed in the revisions to be pushed will be pushed. If
  on-demand was not able to push all necessary revisions it will
  also be aborted and exit with non-zero status.

So 'check' is not translatable.

>  #: builtin/push.c:395 builtin/push.c:396
>  msgid "receive pack program"
> -msgstr ""
> +msgstr "Programm zum Empfangen von Paketen"

Or perhaps "'receive-pack' Programm".

>  #: builtin/read-tree.c:111
> -#, fuzzy
>  msgid "only empty the index"
> -msgstr "Konnte die Bereitstellung nicht lesen"
> +msgstr "leert nur die Bereitstellung"

"Only" here means it doesn't read-a-tree, but empty the index.  So
dropping the "nur" would probably be better.

  #: builtin/remote.c:11
>  msgid "git remote [-v | --verbose]"
> -msgstr ""
> +msgstr "git remove [-v | --verbose]"
  ^^^
typo

>  #: builtin/remote.c:173
>  msgid "set up remote as a mirror to push to or fetch from"
>  msgstr ""
> +"Aufsetzen der Fernarchivs als Spiegelarchiv zum Versenden und Anfordern"
  ^^^
des?

>  "Run \"git rev-parse --parseopt -h\" for more information on the first 
> usage."
>  msgstr ""
> +"git rev-parse --parseopt [Optionen] -- [...]\n"
> +"   or: git rev-parse --sq-quote [...]\n"
> +"   or: git rev-parse [Optionen] [...]\n"
> +"\n"
> +"Führe \"git rev-parse --parseopt -h\" für weitere Informationen bei erster "
> +"Verwendung aus."

Should use 'oder:' in the case split, shouldn't it?

>  #: builtin/rm.c:134
> -#, fuzzy
>  msgid "do not list removed files"
> -msgstr "Kann geänderte Dateien nicht aus der Bereitstellung herausnehmen"
> +msgstr "listet keine entfernten Dateien auf"

Again removed->gelöscht or some such avoids an ambiguity.

>  #: builtin/show-branch.c:651
> -#, fuzzy
>  msgid "show remote-tracking and local branches"
> -msgstr "Kein externer Übernahmezweig für %s von %s"
> +msgstr "zeigt externer Übernahmezweige und lokale Zweige an"
  ^^^
[...]
>  #: builtin/show-branch.c:653
> -#, fuzzy
>  msgid "show remote-tracking branches"
> -msgstr "Kein externer Übernahmezweig für %s von %s"
> +msgstr "zeigt externer Übernahmezweige an"
  ^^^

extern*e*

>  #: builtin/tag.c:464
> -#, fuzzy
>  msgid "use another key to sign the tag"
> -msgstr "konnte Markierung nicht signieren"
> +msgstr "benutzt einen Schlüssel um die Markierung zu signieren"

The original says *another* -- maybe

  benutzt einen anderen Schlüssel um die Markierung zu signieren

>  #: builtin/update-index.c:750
>  msgid "mark files as \"not changing\""
> -msgstr ""
> +msgstr "markiert Dateien als \"not changing\""

Neither original nor translation are very helpful.  Maybe

  Always assume this file to be unchanged
  Betrachte diese Datei immer als unverändert

>  #: 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.

>  #: builtin/update-index.c:776
>  msgid "repopulate stages #2 and #3 for the listed paths"
>  msgstr ""
> +"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.


Yay, that's it.  Even in three parts it was tedious, and I cannot begin
to imagine what *writing* 825 new translations must have felt like.
Thanks for your work!

- Thomas

-- 
Thomas Rast
trast@{inf,student

What's cooking in git.git (Nov 2012, #10; Thu, 29)

2012-11-29 Thread Junio C Hamano
What's cooking in git.git (Nov 2012, #10; Thu, 29)
--

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.

Hopefully 1.8.1-rc0 preview will be tagged this weekend.  Many
topics are marked to be cooked in 'next' during the feature freeze,
but some topics in flight should be in 'master' before -rc1 happens.

You can find the changes described here in the integration branches of the
repositories listed at

http://git-blame.blogspot.com/p/git-public-repositories.html

--
[New Topics]

* wk/submodule-update-remote (2012-11-28) 2 commits
 - submodule add: If --branch is given, record it in .gitmodules
 - submodule update: add --remote for submodule's upstream changes

 Still under active discussion.

--
[Graduated to "master"]

* er/doc-add-new-commands (2012-11-26) 1 commit
  (merged to 'next' on 2012-11-28 at 2daf755)
 + Documentation: how to add a new command


* fc/completion-test-simplification (2012-11-16) 6 commits
  (merged to 'next' on 2012-11-28 at b7b2f67)
 + completion: simplify __gitcomp() test helper
 + completion: refactor __gitcomp related tests
 + completion: consolidate test_completion*() tests
 + completion: simplify tests using test_completion_long()
 + completion: standardize final space marker in tests
 + completion: add comment for test_completion()

 Clean up completion tests.  Use of conslidated helper may make
 instrumenting one particular test during debugging of the test
 itself, but I think that issue should be addressed in some other
 way (e.g. making sure individual tests in 9902 can be skipped).


* fc/remote-hg (2012-11-27) 22 commits
  (merged to 'next' on 2012-11-28 at f805784)
 + remote-hg: fix for older versions of python
 + remote-hg: fix for files with spaces
  (merged to 'next' on 2012-11-18 at 4a4f2e4)
 + remote-hg: avoid bad refs
 + remote-hg: try the 'tip' if no checkout present
 + remote-hg: fix compatibility with older versions of hg
 + remote-hg: add missing config for basic tests
 + remote-hg: the author email can be null
 + remote-hg: add option to not track branches
 + remote-hg: add extra author test
 + remote-hg: add tests to compare with hg-git
 + remote-hg: add bidirectional tests
 + test-lib: avoid full path to store test results
 + remote-hg: add basic tests
 + remote-hg: fake bookmark when there's none
 + remote-hg: add compat for hg-git author fixes
 + remote-hg: add support for hg-git compat mode
 + remote-hg: match hg merge behavior
 + remote-hg: make sure the encoding is correct
 + remote-hg: add support to push URLs
 + remote-hg: add support for remote pushing
 + remote-hg: add support for pushing
 + Add new remote-hg transport helper

 New remote helper for hg.


* fc/send-email-no-sender-prompt (2012-11-26) 1 commit
  (merged to 'next' on 2012-11-28 at 690d525)
 + send-email: avoid questions when user has an ident
 (this branch is used by jk/send-email-sender-prompt.)

 In cases the sender ident is sufficiently specified, there is no
 need to prompt the user before sending the series out.


* fc/zsh-completion (2012-11-19) 2 commits
  (merged to 'next' on 2012-11-26 at 48ebdc9)
 + completion: start moving to the new zsh completion
 + completion: add new zsh completion

 Completion script revamped for zsh users.


* jc/doc-push-satellite (2012-11-27) 1 commit
  (merged to 'next' on 2012-11-28 at 7114637)
 + Documentation/git-push.txt: clarify the "push from satellite" workflow

 Clarify what the example that pushes branches into remote-tracking
 branches of another repository is trying to achieve (i.e. emulating
 a fetch in reverse).


* jk/pickaxe-textconv (2012-10-28) 2 commits
  (merged to 'next' on 2012-11-26 at 2c5b5c9)
 + pickaxe: use textconv for -S counting
 + pickaxe: hoist empty needle check

 Use textconv filters when searching with "log -S".


* jk/send-email-sender-prompt (2012-11-28) 7 commits
  (merged to 'next' on 2012-11-28 at a808921)
 + t9001: check send-email behavior with implicit sender
 + Merge branch 'fc/send-email-no-sender-prompt' into 
jk/send-email-sender-prompt
 + t: add tests for "git var"
 + ident: keep separate "explicit" flags for author and committer
 + ident: make user_ident_explicitly_given static
 + t7502: factor out autoident prerequisite
 + test-lib: allow negation of prerequisites
 (this branch uses fc/send-email-no-sender-prompt.)

 General clean-ups in various areas, originally written to support a
 patch that later turned out to be unneeded.


* jl/submodule-rm (2012-11-23) 1 commit
  (merged to 'next' on 2012-11-28 at 0e4115f)
 + Teach rm to remove submodules when given with a trailing '/'

 Finishing touches to "git rm $submodule" that removes the working
 tree of a submodule.


* km/send-email-remove-cruft-in-address (2012-11-26) 5 commits
  (merged to 'next' 

Re: [PATCH 6/8] imap-send: change msg_data from storing (char *, len) to storing strbuf

2012-11-29 Thread Jeff King
On Thu, Nov 29, 2012 at 01:30:54PM -0800, Junio C Hamano wrote:

> > For some reason, there is a bunch of infrastructure in this file for
> > dealing with IMAP flags, although there is nothing in the code that
> > actually allows any flags to be set.  If there is no plan to add
> > support for flags in the future, a bunch of code could be ripped out
> > and "struct msg_data" could be completely replaced with strbuf.
> 
> Yeah, after all these years we have kept the unused flags field
> there and nobody needed anything out of it.  I am OK with a removal
> if it is done at the very end of the series.

There's a bunch of unused junk in imap-send. The original implementation
copied a bunch of code from isync, a much more full-featured imap
client, and the result ended up way more complex than it needed to be. I
have ripped a few things out over the years when they cause a problem
(e.g., portability of /dev/urandom, conflict over the name "struct
string_list"), but have mostly let it be out of a vague sense that we
might one day want to pull bugfixes from isync upstream.

That has not happened once in the last six years, though, and I would
doubt that a straightforward merge would work after so many years. So
ripping out and refactoring the code in the name of maintainability is
probably a good thing at this point.

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


Re: [PATCH] cache-tree: invalidate i-t-a paths after writing trees

2012-11-29 Thread Junio C Hamano
Nguyen Thai Ngoc Duy  writes:

>> An alternative might be to add a "phoney" bit next to "used" in the
>> cache_tree structure, mark the cache tree as phoney when we skip an
>> entry marked as CE_REMOVE or CE_ITA, and make the postprocessing
>> loop this patch adds aware of that bit, instead of iterating over
>> the index entries; instead, it would recurse the resulting cache
>> tree and invalidate parts of the tree that have subtrees with the
>> "phoney" bit set, or something.
>
> Yeah, that sounds better.

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


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

2012-11-29 Thread Phil Hord
On Thu, Nov 29, 2012 at 2:13 PM, W. Trevor King  wrote:
>
> On Thu, Nov 29, 2012 at 01:29:12PM -0500, Phil Hord wrote:
>> On Fri, Nov 23, 2012 at 12:54 PM, W. Trevor King  wrote:
>> > [snip initial thoughts leading to the update --remote v5]
>>
>> I was thinking the same thing, but reading this whole thread a couple of
>> weeks late.  Thanks for noticing.
>>
>> Moreover, I think that 'git submodule update --pull' is also the wrong way
>> to spell this action.   Maybe you are misled from the outset by your
>> current workflow:
>
> Did you see my v5 (add --remote) series?

Eventually, I did.  Sorry for the out-of-order replies.


>> For that reason, I don't like the --pull switch since it implies a
>> fetch, but I will not always want to do a fetch.
>
>   $ git submodule update --remote --no-fetch
>
> will not fetch the submodule remotes.

This seems precisely backwards to me. Why not use

  $ git submodule update --remote --fetch

to do your "default" behavior instead?   I suppose I am arguing
against the tide of the dominant workflow, but the fetch-by-default
idea needlessly conflates two primitive operations:  "float" and
"fetch".

>> I don't know which remote I should be tracking, though.  I suppose
>> it is 'origin' for now, but maybe it is just whatever
>> $superproject's HEAD's remote-tracking branch indicates.
>
> With the --remote series, I always use "origin" because that's what
> `submodule add` should be setting up.  If people want to change that
> up by hand, we may need a submodule..remote configuration
> option.

I've always felt that the "origin" defaults are broken and are simply
being ignored because most users do not trip over them.  But ISTR that
submodule commands use the remote indicated by the superproject's
current remote-tracking configuration, with a fallback to 'origin' if
there is none.  Sort of a "best effort" algorithm, I think.  Am I
remembering that wrong?


>> I am not sure I want the gitlinks in superproject to update automatically
>> in the index, but I definitely do not want to automatically create a commit
>> for them.
>
> Commits are dissabled by default (see my recent --commit RFC for how
> they would be enabled).
>
>> 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.

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


Re: [PATCH] gitweb: add readme to overview page

2012-11-29 Thread Xypron
The following setting provides the same feature

# html text to include at home page
$home_text = "indextext.html";

Sorry for the noise.

Best regards

Heinrich Schuchardt

On 29.11.2012 23:30, Xypron wrote:
> Hello Junio,
> 
> thank you for your comment in message
> <7vip9ak971@alter.siamese.dyndns.org>
> that message <1352652039-31453-1-git-send-email-xypron.g...@gmx.de>
> lost the thread context.
> 
> As already described I would be happy if a README.html could be added to
> the overview page of gitweb.
> 
> Please, find below an updated patch. Compared to the first version of my
> patch it avoids a warning concerning doubled slashes in filenames and adds
> a subtitle "projects" between the README and the project list.
> 
> Best regards
> 
> Heinrich Schuchardt
> 
> Subject: [PATCH] gitweb: add readme to overview page
> 
> For repositories it is possible to maintain a README.html which will
> be shown on the summary page. This is not possible for the server
> root.
> 
> German law requires to provide contact data on the web server. This
> data could easily be entered in the overview page using a README.html.
> 
> Furthermore it is possible to put the repositories not directly into
> the root directory but into a subdirectory. Here also a README.html
> would be helpful to indicate what the subdirectory is about.
> 
> The patch introduces README.html functionality for the root directory
> and all subdirectories.
> 
> Signed-off-by: Heinrich Schuchardt 
> ---
>  gitweb/gitweb.perl |   13 +
>  1 file changed, 13 insertions(+)
> 
> diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
> index e8812fa..618b0d8 100755
> --- a/gitweb/gitweb.perl
> +++ b/gitweb/gitweb.perl
> @@ -6368,6 +6368,19 @@ sub git_project_list {
>   }
>  
>   git_project_search_form($searchtext, $search_use_regexp);
> + # If XSS prevention is on, we don't include README.html.
> + # TODO: Allow a readme in some safe format.
> + my $path = "";
> + if (defined $project_filter) {
> + $path = "/$project_filter";
> + }
> + if (!$prevent_xss && -s "$projectroot$path/README.html") {
> + print "readme\n" .
> + "\n";
> + insert_file("$projectroot$path/README.html");
> + print "\n\n"; # class="readme"
> + }
> + print "projects\n";
>   git_project_list_body(\@list, $order);
>   git_footer_html();
>  }

--
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] cache-tree: invalidate i-t-a paths after writing trees

2012-11-29 Thread Nguyen Thai Ngoc Duy
On Fri, Nov 30, 2012 at 7:06 AM, Junio C Hamano  wrote:
> Nguyen Thai Ngoc Duy  writes:
>
>>> An alternative might be to add a "phoney" bit next to "used" in the
>>> cache_tree structure, mark the cache tree as phoney when we skip an
>>> entry marked as CE_REMOVE or CE_ITA, and make the postprocessing
>>> loop this patch adds aware of that bit, instead of iterating over
>>> the index entries; instead, it would recurse the resulting cache
>>> tree and invalidate parts of the tree that have subtrees with the
>>> "phoney" bit set, or something.
>>
>> Yeah, that sounds better.
>
> Did anything happen to this topic after this?

Not from my side because I forgot to mark this thread as a todo item
and unsurprisingly forgot about it.
-- 
Duy
--
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 v6 0/8] push: update remote tags only with force

2012-11-29 Thread Chris Rorvick
This patch series originated in response to the following thread:

  http://thread.gmane.org/gmane.comp.version-control.git/208354

I made some adjustments based on Junio's last round of feedback
including a new patch reworking the "push rules" comment in remote.c.
Also refined some of the log messages--nothing major.  Finally, took a
stab at putting something together for the release notes, see below.

Chris

Release notes:

"git push" no longer updates tags (lightweight or annotated) by default.
Specifically, if the destination reference already exists and is under
refs/tags/ or it points to a tag object, it is not allowed to fast-
forward (unless forced using +A:B notation or by passing --force.)  This
is consistent with how a tag is normally thought of: a reference that
does not move once defined.  It also ensures a push will not
inadvertently clobber an already existing tag--something that can go
unnoticed if fast-forwarding is allowed.

Chris Rorvick (8):
  push: return reject reasons as a bitset
  push: add advice for rejected tag reference
  push: flag updates
  push: flag updates that require force
  push: require force for refs under refs/tags/
  push: require force for annotated tags
  push: clarify rejection of update to non-commit-ish
  push: cleanup push rules comment

 Documentation/git-push.txt |  9 ++---
 builtin/push.c | 24 +-
 builtin/send-pack.c|  9 +++--
 cache.h|  7 +++-
 remote.c   | 83 +++---
 send-pack.c|  1 +
 t/t5516-fetch-push.sh  | 44 +++-
 transport-helper.c |  6 
 transport.c| 25 --
 transport.h| 10 +++---
 10 files changed, 167 insertions(+), 51 deletions(-)

-- 
1.8.0.158.g0c4328c

--
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 v6 1/8] push: return reject reasons as a bitset

2012-11-29 Thread Chris Rorvick
Pass all rejection reasons back from transport_push().  The logic is
simpler and more flexible with regard to providing useful feedback.

Signed-off-by: Chris Rorvick 
---
 builtin/push.c  | 13 -
 builtin/send-pack.c |  4 ++--
 transport.c | 17 -
 transport.h |  9 +
 4 files changed, 19 insertions(+), 24 deletions(-)

diff --git a/builtin/push.c b/builtin/push.c
index db9ba30..9d17fc7 100644
--- a/builtin/push.c
+++ b/builtin/push.c
@@ -244,7 +244,7 @@ static void advise_checkout_pull_push(void)
 static int push_with_options(struct transport *transport, int flags)
 {
int err;
-   int nonfastforward;
+   unsigned int reject_reasons;
 
transport_set_verbosity(transport, verbosity, progress);
 
@@ -257,7 +257,7 @@ static int push_with_options(struct transport *transport, 
int flags)
if (verbosity > 0)
fprintf(stderr, _("Pushing to %s\n"), transport->url);
err = transport_push(transport, refspec_nr, refspec, flags,
-&nonfastforward);
+&reject_reasons);
if (err != 0)
error(_("failed to push some refs to '%s'"), transport->url);
 
@@ -265,18 +265,13 @@ static int push_with_options(struct transport *transport, 
int flags)
if (!err)
return 0;
 
-   switch (nonfastforward) {
-   default:
-   break;
-   case NON_FF_HEAD:
+   if (reject_reasons & REJECT_NON_FF_HEAD) {
advise_pull_before_push();
-   break;
-   case NON_FF_OTHER:
+   } else if (reject_reasons & REJECT_NON_FF_OTHER) {
if (default_matching_used)
advise_use_upstream();
else
advise_checkout_pull_push();
-   break;
}
 
return 1;
diff --git a/builtin/send-pack.c b/builtin/send-pack.c
index d342013..9f98607 100644
--- a/builtin/send-pack.c
+++ b/builtin/send-pack.c
@@ -85,7 +85,7 @@ int cmd_send_pack(int argc, const char **argv, const char 
*prefix)
int send_all = 0;
const char *receivepack = "git-receive-pack";
int flags;
-   int nonfastforward = 0;
+   unsigned int reject_reasons;
int progress = -1;
 
argv++;
@@ -223,7 +223,7 @@ int cmd_send_pack(int argc, const char **argv, const char 
*prefix)
ret |= finish_connect(conn);
 
if (!helper_status)
-   transport_print_push_status(dest, remote_refs, args.verbose, 0, 
&nonfastforward);
+   transport_print_push_status(dest, remote_refs, args.verbose, 0, 
&reject_reasons);
 
if (!args.dry_run && remote) {
struct ref *ref;
diff --git a/transport.c b/transport.c
index 9932f40..d4568e7 100644
--- a/transport.c
+++ b/transport.c
@@ -714,7 +714,7 @@ static int print_one_push_status(struct ref *ref, const 
char *dest, int count, i
 }
 
 void transport_print_push_status(const char *dest, struct ref *refs,
- int verbose, int porcelain, int 
*nonfastforward)
+ int verbose, int porcelain, unsigned int 
*reject_reasons)
 {
struct ref *ref;
int n = 0;
@@ -733,18 +733,17 @@ void transport_print_push_status(const char *dest, struct 
ref *refs,
if (ref->status == REF_STATUS_OK)
n += print_one_push_status(ref, dest, n, porcelain);
 
-   *nonfastforward = 0;
+   *reject_reasons = 0;
for (ref = refs; ref; ref = ref->next) {
if (ref->status != REF_STATUS_NONE &&
ref->status != REF_STATUS_UPTODATE &&
ref->status != REF_STATUS_OK)
n += print_one_push_status(ref, dest, n, porcelain);
-   if (ref->status == REF_STATUS_REJECT_NONFASTFORWARD &&
-   *nonfastforward != NON_FF_HEAD) {
+   if (ref->status == REF_STATUS_REJECT_NONFASTFORWARD) {
if (!strcmp(head, ref->name))
-   *nonfastforward = NON_FF_HEAD;
+   *reject_reasons |= REJECT_NON_FF_HEAD;
else
-   *nonfastforward = NON_FF_OTHER;
+   *reject_reasons |= REJECT_NON_FF_OTHER;
}
}
 }
@@ -1031,9 +1030,9 @@ static void die_with_unpushed_submodules(struct 
string_list *needs_pushing)
 
 int transport_push(struct transport *transport,
   int refspec_nr, const char **refspec, int flags,
-  int *nonfastforward)
+  unsigned int *reject_reasons)
 {
-   *nonfastforward = 0;
+   *reject_reasons = 0;
transport_verify_remote_names(refspec_nr, refspec);
 
if (transport->push) {
@@ -1099,7 +1098,7 @@ int transport_push(struct transport *transport,
if (!quiet || err)
tr

[PATCH v6 2/8] push: add advice for rejected tag reference

2012-11-29 Thread Chris Rorvick
Advising the user to fetch and merge only makes sense if the rejected
reference is a branch.  If none of the rejections are for branches, just
tell the user the reference already exists.

Signed-off-by: Chris Rorvick 
---
 builtin/push.c | 11 +++
 cache.h|  1 +
 remote.c   | 10 ++
 transport.c|  2 ++
 transport.h|  1 +
 5 files changed, 25 insertions(+)

diff --git a/builtin/push.c b/builtin/push.c
index 9d17fc7..e08485d 100644
--- a/builtin/push.c
+++ b/builtin/push.c
@@ -220,6 +220,10 @@ static const char message_advice_checkout_pull_push[] =
   "(e.g. 'git pull') before pushing again.\n"
   "See the 'Note about fast-forwards' in 'git push --help' for 
details.");
 
+static const char message_advice_ref_already_exists[] =
+   N_("Updates were rejected because the destination reference already 
exists\n"
+  "in the remote and the update is not a fast-forward.");
+
 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();
}
 
return 1;
diff --git a/cache.h b/cache.h
index dbd8018..d72b64d 100644
--- a/cache.h
+++ b/cache.h
@@ -1002,6 +1002,7 @@ struct ref {
unsigned int force:1,
merge:1,
nonfastforward:1,
+   not_forwardable:1,
deletion:1;
enum {
REF_STATUS_NONE = 0,
diff --git a/remote.c b/remote.c
index 04fd9ea..5101683 100644
--- a/remote.c
+++ b/remote.c
@@ -1279,6 +1279,14 @@ int match_push_refs(struct ref *src, struct ref **dst,
return 0;
 }
 
+static inline int is_forwardable(struct ref* ref)
+{
+   if (!prefixcmp(ref->name, "refs/tags/"))
+   return 0;
+
+   return 1;
+}
+
 void set_ref_status_for_push(struct ref *remote_refs, int send_mirror,
int force_update)
 {
@@ -1316,6 +1324,8 @@ void set_ref_status_for_push(struct ref *remote_refs, int 
send_mirror,
 * always allowed.
 */
 
+   ref->not_forwardable = !is_forwardable(ref);
+
ref->nonfastforward =
!ref->deletion &&
!is_null_sha1(ref->old_sha1) &&
diff --git a/transport.c b/transport.c
index d4568e7..bc31e8e 100644
--- a/transport.c
+++ b/transport.c
@@ -740,6 +740,8 @@ void transport_print_push_status(const char *dest, struct 
ref *refs,
ref->status != REF_STATUS_OK)
n += print_one_push_status(ref, dest, n, porcelain);
if (ref->status == REF_STATUS_REJECT_NONFASTFORWARD) {
+   if (ref->not_forwardable)
+   *reject_reasons |= REJECT_ALREADY_EXISTS;
if (!strcmp(head, ref->name))
*reject_reasons |= REJECT_NON_FF_HEAD;
else
diff --git a/transport.h b/transport.h
index 404b113..bfd2df5 100644
--- a/transport.h
+++ b/transport.h
@@ -142,6 +142,7 @@ void transport_set_verbosity(struct transport *transport, 
int verbosity,
 
 #define REJECT_NON_FF_HEAD 0x01
 #define REJECT_NON_FF_OTHER0x02
+#define REJECT_ALREADY_EXISTS  0x04
 
 int transport_push(struct transport *connection,
   int refspec_nr, const char **refspec, int flags,
-- 
1.8.0.158.g0c4328c

--
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 v6 3/8] push: flag updates

2012-11-29 Thread Chris Rorvick
If the reference exists on the remote and it is not being removed, then
mark as an update.  This is in preparation for handling tags (lightweight
and annotated) exceptionally.

Signed-off-by: Chris Rorvick 
---
 cache.h  |  1 +
 remote.c | 18 +++---
 2 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/cache.h b/cache.h
index d72b64d..722321c 100644
--- a/cache.h
+++ b/cache.h
@@ -1003,6 +1003,7 @@ struct ref {
merge:1,
nonfastforward:1,
not_forwardable:1,
+   update:1,
deletion:1;
enum {
REF_STATUS_NONE = 0,
diff --git a/remote.c b/remote.c
index 5101683..07040b8 100644
--- a/remote.c
+++ b/remote.c
@@ -1326,15 +1326,19 @@ void set_ref_status_for_push(struct ref *remote_refs, 
int send_mirror,
 
ref->not_forwardable = !is_forwardable(ref);
 
-   ref->nonfastforward =
+   ref->update =
!ref->deletion &&
-   !is_null_sha1(ref->old_sha1) &&
-   (!has_sha1_file(ref->old_sha1)
- || !ref_newer(ref->new_sha1, ref->old_sha1));
+   !is_null_sha1(ref->old_sha1);
 
-   if (ref->nonfastforward && !ref->force && !force_update) {
-   ref->status = REF_STATUS_REJECT_NONFASTFORWARD;
-   continue;
+   if (ref->update) {
+   ref->nonfastforward =
+   !has_sha1_file(ref->old_sha1)
+ || !ref_newer(ref->new_sha1, ref->old_sha1);
+
+   if (ref->nonfastforward && !ref->force && 
!force_update) {
+   ref->status = REF_STATUS_REJECT_NONFASTFORWARD;
+   continue;
+   }
}
}
 }
-- 
1.8.0.158.g0c4328c

--
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 v6 5/8] push: require force for refs under refs/tags/

2012-11-29 Thread Chris Rorvick
References are allowed to update from one commit-ish to another if the
former is an ancestor of the latter.  This behavior is oriented to
branches which are expected to move with commits.  Tag references are
expected to be static in a repository, though, thus an update to
something under refs/tags/ should be rejected unless the update is
forced.

Signed-off-by: Chris Rorvick 
---
 Documentation/git-push.txt | 11 ++-
 builtin/push.c |  2 +-
 builtin/send-pack.c|  5 +
 cache.h|  1 +
 remote.c   | 18 ++
 send-pack.c|  1 +
 t/t5516-fetch-push.sh  | 23 ++-
 transport-helper.c |  6 ++
 transport.c|  8 ++--
 9 files changed, 62 insertions(+), 13 deletions(-)

diff --git a/Documentation/git-push.txt b/Documentation/git-push.txt
index fe46c42..09bdec7 100644
--- a/Documentation/git-push.txt
+++ b/Documentation/git-push.txt
@@ -51,11 +51,12 @@ be named. If `:` is omitted, the same ref as  
will be
 updated.
 +
 The object referenced by  is used to update the  reference
-on the remote side, but by default this is only allowed if the
-update can fast-forward .  By having the optional leading `+`,
-you can tell git to update the  ref even when the update is not a
-fast-forward.  This does *not* attempt to merge  into .  See
-EXAMPLES below for details.
+on the remote side.  By default this is only allowed if  is not
+under refs/tags/, and then only if it can fast-forward .  By having
+the optional leading `+`, you can tell git to update the  ref even
+if it is not allowed by default (e.g., it is not a fast-forward.)  This
+does *not* attempt to merge  into .  See EXAMPLES below for
+details.
 +
 `tag ` means the same as `refs/tags/:refs/tags/`.
 +
diff --git a/builtin/push.c b/builtin/push.c
index e08485d..83a3cc8 100644
--- a/builtin/push.c
+++ b/builtin/push.c
@@ -222,7 +222,7 @@ static const char message_advice_checkout_pull_push[] =
 
 static const char message_advice_ref_already_exists[] =
N_("Updates were rejected because the destination reference already 
exists\n"
-  "in the remote and the update is not a fast-forward.");
+  "in the remote.");
 
 static void advise_pull_before_push(void)
 {
diff --git a/builtin/send-pack.c b/builtin/send-pack.c
index 9f98607..f849e0a 100644
--- a/builtin/send-pack.c
+++ b/builtin/send-pack.c
@@ -44,6 +44,11 @@ static void print_helper_status(struct ref *ref)
msg = "non-fast forward";
break;
 
+   case REF_STATUS_REJECT_ALREADY_EXISTS:
+   res = "error";
+   msg = "already exists";
+   break;
+
case REF_STATUS_REJECT_NODELETE:
case REF_STATUS_REMOTE_REJECT:
res = "error";
diff --git a/cache.h b/cache.h
index b7ab4ac..a32a0ea 100644
--- a/cache.h
+++ b/cache.h
@@ -1011,6 +1011,7 @@ struct ref {
REF_STATUS_NONE = 0,
REF_STATUS_OK,
REF_STATUS_REJECT_NONFASTFORWARD,
+   REF_STATUS_REJECT_ALREADY_EXISTS,
REF_STATUS_REJECT_NODELETE,
REF_STATUS_UPTODATE,
REF_STATUS_REMOTE_REJECT,
diff --git a/remote.c b/remote.c
index 4a6f822..012b52f 100644
--- a/remote.c
+++ b/remote.c
@@ -1315,14 +1315,18 @@ void set_ref_status_for_push(struct ref *remote_refs, 
int send_mirror,
 *
 * (1) if the old thing does not exist, it is OK.
 *
-* (2) if you do not have the old thing, you are not allowed
+* (2) if the destination is under refs/tags/ you are
+* not allowed to overwrite it; tags are expected
+* to be static once created
+*
+* (3) if you do not have the old thing, you are not allowed
 * to overwrite it; you would not know what you are losing
 * otherwise.
 *
-* (3) if both new and old are commit-ish, and new is a
+* (4) if both new and old are commit-ish, and new is a
 * descendant of old, it is OK.
 *
-* (4) regardless of all of the above, removing :B is
+* (5) regardless of all of the above, removing :B is
 * always allowed.
 */
 
@@ -1337,7 +1341,13 @@ void set_ref_status_for_push(struct ref *remote_refs, 
int send_mirror,
!has_sha1_file(ref->old_sha1)
  || !ref_newer(ref->new_sha1, ref->old_sha1);
 
-   if (ref->nonfastforward) {
+   if (ref->not_forwardable) {
+   ref->requires_force = 1;
+   if (!force_ref_update) {
+

[PATCH v6 4/8] push: flag updates that require force

2012-11-29 Thread Chris Rorvick
Add a flag for indicating an update to a reference requires force.
Currently the `nonfastforward` flag is used for this when generating the
status message.  A separate flag insulates dependent logic from the
details of set_ref_status_for_push().

Signed-off-by: Chris Rorvick 
---
 cache.h |  4 +++-
 remote.c| 11 ---
 transport.c |  2 +-
 3 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/cache.h b/cache.h
index 722321c..b7ab4ac 100644
--- a/cache.h
+++ b/cache.h
@@ -999,7 +999,9 @@ struct ref {
unsigned char old_sha1[20];
unsigned char new_sha1[20];
char *symref;
-   unsigned int force:1,
+   unsigned int
+   force:1,
+   requires_force:1,
merge:1,
nonfastforward:1,
not_forwardable:1,
diff --git a/remote.c b/remote.c
index 07040b8..4a6f822 100644
--- a/remote.c
+++ b/remote.c
@@ -1293,6 +1293,8 @@ void set_ref_status_for_push(struct ref *remote_refs, int 
send_mirror,
struct ref *ref;
 
for (ref = remote_refs; ref; ref = ref->next) {
+   int force_ref_update = ref->force || force_update;
+
if (ref->peer_ref)
hashcpy(ref->new_sha1, ref->peer_ref->new_sha1);
else if (!send_mirror)
@@ -1335,9 +1337,12 @@ void set_ref_status_for_push(struct ref *remote_refs, 
int send_mirror,
!has_sha1_file(ref->old_sha1)
  || !ref_newer(ref->new_sha1, ref->old_sha1);
 
-   if (ref->nonfastforward && !ref->force && 
!force_update) {
-   ref->status = REF_STATUS_REJECT_NONFASTFORWARD;
-   continue;
+   if (ref->nonfastforward) {
+   ref->requires_force = 1;
+   if (!force_ref_update) {
+   ref->status = 
REF_STATUS_REJECT_NONFASTFORWARD;
+   continue;
+   }
}
}
}
diff --git a/transport.c b/transport.c
index bc31e8e..f3160b1 100644
--- a/transport.c
+++ b/transport.c
@@ -659,7 +659,7 @@ static void print_ok_ref_status(struct ref *ref, int 
porcelain)
const char *msg;
 
strcpy(quickref, status_abbrev(ref->old_sha1));
-   if (ref->nonfastforward) {
+   if (ref->requires_force) {
strcat(quickref, "...");
type = '+';
msg = "forced update";
-- 
1.8.0.158.g0c4328c

--
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 v6 7/8] push: clarify rejection of update to non-commit-ish

2012-11-29 Thread Chris Rorvick
Pushes must already (by default) update to a commit-ish due to the fast-
forward check in set_ref_status_for_push().  But rejecting for not being
a fast-forward suggests the situation can be resolved with a merge.
Flag these updates (i.e., to a blob or a tree) as not forwardable so the
user is presented with more appropriate advice.

While updating *from* a tag object is potentially destructive, updating
*to* a tag is not.  Additionally, a push to the refs/tags/ hierarchy is
already excluded from fast-forwarding, and refs/heads/ is protected from
anything but commit objects by a check in write_ref_sha1().  Thus
someone fast-forwarding to a tag is probably not doing so by accident.
Since updating to a tag is benign and unlikely to cause confusion, allow
it in case someone finds the behavior useful.

Signed-off-by: Chris Rorvick 
---
 remote.c | 5 +
 1 file changed, 5 insertions(+)

diff --git a/remote.c b/remote.c
index f5bc4e7..ee0c1e5 100644
--- a/remote.c
+++ b/remote.c
@@ -1291,6 +1291,11 @@ static inline int is_forwardable(struct ref* ref)
if (!o || o->type != OBJ_COMMIT)
return 0;
 
+   /* new object must be commit-ish */
+   o = deref_tag(parse_object(ref->new_sha1), NULL, 0);
+   if (!o || o->type != OBJ_COMMIT)
+   return 0;
+
return 1;
 }
 
-- 
1.8.0.158.g0c4328c

--
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 v6 8/8] push: cleanup push rules comment

2012-11-29 Thread Chris Rorvick
Rewrite to remove inter-dependencies amongst the rules.

Signed-off-by: Chris Rorvick 
---
 remote.c | 32 +---
 1 file changed, 17 insertions(+), 15 deletions(-)

diff --git a/remote.c b/remote.c
index ee0c1e5..6309a87 100644
--- a/remote.c
+++ b/remote.c
@@ -1319,27 +1319,29 @@ void set_ref_status_for_push(struct ref *remote_refs, 
int send_mirror,
continue;
}
 
-   /* This part determines what can overwrite what.
-* The rules are:
+   /*
+* The below logic determines whether an individual
+* refspec A:B can be pushed.  The push will succeed
+* if any of the following are true:
 *
-* (0) you can always use --force or +A:B notation to
-* selectively force individual ref pairs.
+* (1) the remote reference B does not exist
 *
-* (1) if the old thing does not exist, it is OK.
+* (2) the remote reference B is being removed (i.e.,
+* pushing :B where no source is specified)
 *
-* (2) if the destination is under refs/tags/ you are
-* not allowed to overwrite it; tags are expected
-* to be static once created
+* (3) the update meets all fast-forwarding criteria:
 *
-* (3) if you do not have the old thing, you are not allowed
-* to overwrite it; you would not know what you are losing
-* otherwise.
+* (a) the destination is not under refs/tags/
+* (b) the old is a commit
+* (c) the new is a descendant of the old
 *
-* (4) if old is a commit and new is a descendant of old
-* (implying new is commit-ish), it is OK.
+* 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.
 *
-* (5) regardless of all of the above, removing :B is
-* always allowed.
+* (4) it is forced using the +A:B notation, or by
+* passing the --force argument
 */
 
ref->not_forwardable = !is_forwardable(ref);
-- 
1.8.0.158.g0c4328c

--
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 v6 6/8] push: require force for annotated tags

2012-11-29 Thread Chris Rorvick
Do not allow fast-forwarding of references that point to a tag object.
Updating from a tag is potentially destructive since it would likely
leave the tag dangling.  Disallowing updates to a tag also makes sense
semantically and is consistent with the behavior of lightweight tags.

Signed-off-by: Chris Rorvick 
---
 Documentation/git-push.txt | 10 +-
 remote.c   | 11 +--
 t/t5516-fetch-push.sh  | 21 +
 3 files changed, 35 insertions(+), 7 deletions(-)

diff --git a/Documentation/git-push.txt b/Documentation/git-push.txt
index 09bdec7..7a04ce5 100644
--- a/Documentation/git-push.txt
+++ b/Documentation/git-push.txt
@@ -52,11 +52,11 @@ updated.
 +
 The object referenced by  is used to update the  reference
 on the remote side.  By default this is only allowed if  is not
-under refs/tags/, and then only if it can fast-forward .  By having
-the optional leading `+`, you can tell git to update the  ref even
-if it is not allowed by default (e.g., it is not a fast-forward.)  This
-does *not* attempt to merge  into .  See EXAMPLES below for
-details.
+a tag (annotated or lightweight), and then only if it can fast-forward
+.  By having the optional leading `+`, you can tell git to update
+the  ref even if it is not allowed by default (e.g., it is not a
+fast-forward.)  This does *not* attempt to merge  into .  See
+EXAMPLES below for details.
 +
 `tag ` means the same as `refs/tags/:refs/tags/`.
 +
diff --git a/remote.c b/remote.c
index 012b52f..f5bc4e7 100644
--- a/remote.c
+++ b/remote.c
@@ -1281,9 +1281,16 @@ int match_push_refs(struct ref *src, struct ref **dst,
 
 static inline int is_forwardable(struct ref* ref)
 {
+   struct object *o;
+
if (!prefixcmp(ref->name, "refs/tags/"))
return 0;
 
+   /* old object must be a commit */
+   o = parse_object(ref->old_sha1);
+   if (!o || o->type != OBJ_COMMIT)
+   return 0;
+
return 1;
 }
 
@@ -1323,8 +1330,8 @@ void set_ref_status_for_push(struct ref *remote_refs, int 
send_mirror,
 * to overwrite it; you would not know what you are losing
 * otherwise.
 *
-* (4) if both new and old are commit-ish, and new is a
-* descendant of old, it is OK.
+* (4) if old is a commit and new is a descendant of old
+* (implying new is commit-ish), it is OK.
 *
 * (5) regardless of all of the above, removing :B is
 * always allowed.
diff --git a/t/t5516-fetch-push.sh b/t/t5516-fetch-push.sh
index 8f024a0..6009372 100755
--- a/t/t5516-fetch-push.sh
+++ b/t/t5516-fetch-push.sh
@@ -950,6 +950,27 @@ test_expect_success 'push requires --force to update 
lightweight tag' '
)
 '
 
+test_expect_success 'push requires --force to update annotated tag' '
+   mk_test heads/master &&
+   mk_child child1 &&
+   mk_child child2 &&
+   (
+   cd child1 &&
+   git tag -a -m "message 1" Tag &&
+   git push ../child2 Tag:refs/tmp/Tag &&
+   git push ../child2 Tag:refs/tmp/Tag &&
+   >file1 &&
+   git add file1 &&
+   git commit -m "file1" &&
+   git tag -f -a -m "message 2" Tag &&
+   test_must_fail git push ../child2 Tag:refs/tmp/Tag &&
+   git push --force ../child2 Tag:refs/tmp/Tag &&
+   git tag -f -a -m "message 3" Tag HEAD~ &&
+   test_must_fail git push ../child2 Tag:refs/tmp/Tag &&
+   git push --force ../child2 Tag:refs/tmp/Tag
+   )
+'
+
 test_expect_success 'push --porcelain' '
mk_empty &&
echo >.git/foo  "To testrepo" &&
-- 
1.8.0.158.g0c4328c

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


[Query] Can we ignore case for commiters name in shortlog?

2012-11-29 Thread viresh kumar
Hi Junio and others,

I have a query. git shortlog lists the patches submitted per commiter, like:

> Viresh Kumar (7):
>   cpufreq: Improve debug prints
>   cpufreq: return early from __cpufreq_driver_getavg()
>   cpufreq: governors: remove redundant code
>   cpufreq: Fix sparse warnings by updating cputime64_t to u64
>   cpufreq: Fix sparse warning by making local function static
>   cpufreq: Avoid calling cpufreq driver's target() routine if target_freq 
> == policy->cur
>   cpufreq: Make sure target freq is within limits

> viresh kumar (3):
>   cpufreq / core: Fix typo in comment describing show_bios_limit()
>   cpufreq / core: Fix printing of governor and driver name
>   cpufreq: Move common part from governors to separate file, v2

I know, there was something wrong at my end and i have commited stuff
with different cases.

I was just thinking if we can ignore case for commiter name while
listing stuff here?
So, that we get over any manual mistakes from commiter.

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


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

2012-11-29 Thread 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  wrote:
> > On Thu, Nov 29, 2012 at 01:29:12PM -0500, Phil Hord wrote:
> >> For that reason, I don't like the --pull switch since it implies a
> >> fetch, but I will not always want to do a fetch.
> >
> >   $ git submodule update --remote --no-fetch
> >
> > will not fetch the submodule remotes.
> 
> This seems precisely backwards to me. Why not use
> 
>   $ git submodule update --remote --fetch
> 
> to do your "default" behavior instead?   I suppose I am arguing
> against the tide of the dominant workflow, but the fetch-by-default
> idea needlessly conflates two primitive operations:  "float" and
> "fetch".

Because --no-fetch is the existing option, and if it ain't broke… ;).

> >> I don't know which remote I should be tracking, though.  I suppose
> >> it is 'origin' for now, but maybe it is just whatever
> >> $superproject's HEAD's remote-tracking branch indicates.
> >
> > With the --remote series, I always use "origin" because that's what
> > `submodule add` should be setting up.  If people want to change that
> > up by hand, we may need a submodule..remote configuration
> > option.
> 
> I've always felt that the "origin" defaults are broken and are simply
> being ignored because most users do not trip over them.  But ISTR that
> submodule commands use the remote indicated by the superproject's
> current remote-tracking configuration, with a fallback to 'origin' if
> there is none.  Sort of a "best effort" algorithm, I think.  Am I
> remembering that wrong?

The current code uses a bare "git-fetch".  I'm not sure what that
defaults to if you're on a detached head.  If it bothers you, I'm fine
adding the submodule..remote option in v6.

> >> I am not sure I want the gitlinks in superproject to update automatically
> >> in the index, but I definitely do not want to automatically create a commit
> >> for them.
> >
> > Commits are dissabled by default (see my recent --commit RFC for how
> > they would be enabled).
> >
> >> 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.

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


signature.asc
Description: OpenPGP digital signature


Re: [Query] Can we ignore case for commiters name in shortlog?

2012-11-29 Thread David Aguilar
On Thu, Nov 29, 2012 at 6:09 PM, viresh kumar  wrote:
> Hi Junio and others,
>
> I have a query. git shortlog lists the patches submitted per commiter, like:
>
>> Viresh Kumar (7):
>>   cpufreq: Improve debug prints
>>   cpufreq: return early from __cpufreq_driver_getavg()
>>   cpufreq: governors: remove redundant code
>>   cpufreq: Fix sparse warnings by updating cputime64_t to u64
>>   cpufreq: Fix sparse warning by making local function static
>>   cpufreq: Avoid calling cpufreq driver's target() routine if 
>> target_freq == policy->cur
>>   cpufreq: Make sure target freq is within limits
>
>> viresh kumar (3):
>>   cpufreq / core: Fix typo in comment describing show_bios_limit()
>>   cpufreq / core: Fix printing of governor and driver name
>>   cpufreq: Move common part from governors to separate file, v2
>
> I know, there was something wrong at my end and i have commited stuff
> with different cases.
>
> I was just thinking if we can ignore case for commiter name while
> listing stuff here?
> So, that we get over any manual mistakes from commiter.

There's a feature that does exactly this.

http://www.kernel.org/pub/software/scm/git/docs/git-shortlog.html

See the section called "Mapping Authors".
It discusses the .mailmap file.
-- 
David
--
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: [Query] Can we ignore case for commiters name in shortlog?

2012-11-29 Thread Viresh Kumar
On 30 November 2012 08:54, David Aguilar  wrote:
> There's a feature that does exactly this.
>
> http://www.kernel.org/pub/software/scm/git/docs/git-shortlog.html
>
> See the section called "Mapping Authors".
> It discusses the .mailmap file.

I have my name there :)

I thought using names with different case is actually different then misspelling
it. And so, everybody must not be required to update their names in mailmap
with different case. So, with same email id and same name (that may be in
different case), we can show commits together in shortlog.

--
viresh
--
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: [Query] Can we ignore case for commiters name in shortlog?

2012-11-29 Thread Nicolas Pitre
On Fri, 30 Nov 2012, viresh kumar wrote:

> Hi Junio and others,
> 
> I have a query. git shortlog lists the patches submitted per commiter, like:
> 
> > Viresh Kumar (7):
> >   cpufreq: Improve debug prints
> >   cpufreq: return early from __cpufreq_driver_getavg()
> >   cpufreq: governors: remove redundant code
> >   cpufreq: Fix sparse warnings by updating cputime64_t to u64
> >   cpufreq: Fix sparse warning by making local function static
> >   cpufreq: Avoid calling cpufreq driver's target() routine if 
> > target_freq == policy->cur
> >   cpufreq: Make sure target freq is within limits
> 
> > viresh kumar (3):
> >   cpufreq / core: Fix typo in comment describing show_bios_limit()
> >   cpufreq / core: Fix printing of governor and driver name
> >   cpufreq: Move common part from governors to separate file, v2
> 
> I know, there was something wrong at my end and i have commited stuff
> with different cases.
> 
> I was just thinking if we can ignore case for commiter name while
> listing stuff here?
> So, that we get over any manual mistakes from commiter.

Have a look at the .mailmap file in the top directory of your repo.


Nicolas
--
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: [Query] Can we ignore case for commiters name in shortlog?

2012-11-29 Thread Viresh Kumar
On 30 November 2012 09:03, Nicolas Pitre  wrote:

> Have a look at the .mailmap file in the top directory of your repo.

Repeating what i said to David in other mail:

I have my name there :)

I thought using names with different case is actually different then misspelling
it. And so, everybody must not be required to update their names in mailmap
with different case. So, with same email id and same name (that may be in
different case), we can show commits together in shortlog.

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


New git.pot is generated for git 1.8.1 l10n round 2

2012-11-29 Thread Jiang Xin
Hi,

New "git.pot" is generated from v1.8.0.1-347-gf94c3 in the master branch.

l10n: Update git.pot (5 new, 1 removed messages)

L10n for git 1.8.1 round 2: Generate po/git.pot from v1.8.0.1-347-gf94c3.

Signed-off-by: Jiang Xin 

This update is for the l10n of upcoming git 1.8.1. You can get it from
the usual place:

https://github.com/git-l10n/git-po/

--
Jiang Xin
--
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 jewelry is a tradition built

2012-11-29 Thread meidx77
The particular assortment contains 450 coronary heart elegance necklaces may
be utilized necklaces, phones used to merely, jewelry and also necklaces.
Thankfully there exists a right in law to style and also generate one thing
of one's gorgeous household relative to this kind of goal. Right now there
is going to be a single that's not constrained you ought to get some good
interest and also imagination. We have been extremely probably greater than
500 Thomas Sabo throughout the world. Bear in mind specific activities basic
breathtaking items to make certain they may be wonderful.
[url=http://www.thomassabobraceletsshop.co.uk/]thomas sabo uk[/url] are
characterized by a series of colossal as the selection of Thomas Sabo Gold.
>From the variety of a number of silver pendants, diamond earrings and a
bracelet-type gold charm available for sale. Thomas Sabo jewelry is a
tradition built and incredibly fine detail. 
http://www.thomassabobraceletsshop.co.uk/ 



--
View this message in context: 
http://git.661346.n2.nabble.com/Thomas-Sabo-jewelry-is-a-tradition-built-tp7572427.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 v7 p2 1/2] fast-export: don't handle uninteresting refs

2012-11-29 Thread Felipe Contreras
On Thu, Nov 29, 2012 at 2:16 AM, Max Horn  wrote:
>
> On 28.11.2012, at 23:23, Felipe Contreras wrote:
>
>> They have been marked as UNINTERESTING for a reason, lets respect that.
>>
>> Currently the first ref is handled properly, but not the rest:
>>
>>  % git fast-export master ^uninteresting ^foo ^bar
>
> All these refs are assumed to point to the same object, right? I think it 
> would be better if the commit message stated that explicitly. To make up for 
> the lost space, you could then get rid of one of the four refs, I think three 
> are sufficient to drive the message home ;-).

Yeah, they point to the same object.

> 
>
>> The reason this happens is that before traversing the commits,
>> fast-export checks if any of the refs point to the same object, and any
>> duplicated ref gets added to a list in order to issue 'reset' commands
>> after the traversing. Unfortunately, it's not even checking if the
>> commit is flagged as UNINTERESTING. The fix of course, is to do
>> precisely that.
>
> Hm... So this might be me being a stupid n00b (I am not yet that familiar 
> with the internal rep of things in git and all...)... but I found the 
> "precisely that" par very confusing, because right afterwards, you say:

Yeah, the next part was added afterwards.

>> However, in order to do it properly we need to get the UNINTERESTING flag
>> from the command line ref, not from the commit object.
>
> So this sounds like you are saying "we do *precisely* that, except we don't, 
> because it is more complicated, so we actually don't do this *precisely*, 
> just manner of speaking..."

Well, we do check fro the UNINTERESTING flag, but on the ref, not on the commit.

> Some details here are beyond my knowledge, I am afraid, so I have to resort 
> to guess: In particular it is not clear to me why the "however" part pops up: 
> Reading it makes it sound as if the commit object also carries an 
> UNINTERESTING flag, but we can't use it because of some reason (perhaps it 
> doesn't have the semantics we need?), so we have to look at revs.pending 
> instead. Right? Wrong? Or is it because the commit objects actually do *not* 
> carry the UNINTERESTING bits, hence we need to look at revs.pending. Or is it 
> due to yet another reason?

It's actually revs.cmdline, I typed the wrong one.

If you have two refs pointing to the same object, and you do 'one
^two', the object (e.g. 8c7a786) will get the UNINTERESTING flag, but
that doesn't tell us anything about the ref being a positive or a
negative one, and revs.pending only has the object flags. On the other
hand revs.cmdline does have the flags for the refs.

Does that explain it?

> Anyway, other than these nitpicky questions, this whole thing looks very 
> logical to me, description and code alike. I also played around with tons of 
> "fast-export" invocations, with and without this patch, and it seems to do 
> what the description says. Finally, I went to the various long threads 
> discussion prior versions of this patch, in particular those starting at
>   http://thread.gmane.org/gmane.comp.version-control.git/208725
> and
>   http://thread.gmane.org/gmane.comp.version-control.git/209355/focus=209370
>
> These contained some concerns. Sadly, several of those discussions ultimately 
> degenerated into not-so-pleasant exchanges :-(, and my impression is that as 
> a result some people are not so inclined to comment on these patches anymore 
> at all. Which is a pity :-(. But overall, it seems this patch makes nothing 
> worse, but fixes some things; and it is simple enough that it shouldn't make 
> future improvements harder.
>
> So *I* at least am quite happy with this, it helps me! My impression is that 
> Felipe's latest patch addresses most concerns people raised by means of an 
> improved description. I couldn't find any in those threads that I feel still 
> applies -- but of course those people should speak for themselves, I am 
> simply afraid they don't want to be part of this anymore :-(.

Indeed. For all the concerns given I made a response to how that
either is not true, or doesn't really matter, and in the case of the
latter, I asked for examples where it would matter, only to receive
nothing. For whatever reason involved people are not responding, not a
single valid concern has been raised and remained.

So I think it's good.

Cheers.

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


swarovski schmuck assortment incorporates ravenscroft

2012-11-29 Thread muyisi447
Swarovski crystals are made with precision and are machine cut which provides
flawless consistency, rich colour and a captivating sparkle. Swarovski
crystals come in a variety of colours, shapes and sizes and are normally
produced as beads that are used to make superb
jewellery.[url=http://www.swarovskischmuckohrringe.de/]swarovski
steine[/url] also design figurines, crystal objects and crystal lighting and
the company draws its richness of expression from the culturalheritage of
central Europe.For less formal wear, Swarovski crystal beads can be used to
create more fun and casual jewellery, including a simple crystal charm
bracelet. Adding crystal beads of different colours to a simple charm
bracelet type chain gives you an instant mood enhancer even on the dullest
of days! These simple bracelets are ideal for little girls, as the crystal
beads come in such a huge spectrum of colours that there are bound to be
some in your child's favourite tones. As Swarovski crystal beads are very
cheap to buy and easy to use, you can even encourage your children to join
in and create their own jewellery. It can start a lifetime love of jewellery
making and it's rare to find a little girl who doesn't love creating her own
jewellery from beads, so why not encourage that creativity?

http://www.swarovskischmuckohrringe.de/  




--
View this message in context: 
http://git.661346.n2.nabble.com/swarovski-schmuck-assortment-incorporates-ravenscroft-tp7572429.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


Typically the swarovski presents a variety of less significant

2012-11-29 Thread qipaa55
Less expensive compared to utilizing semi-precious as well as valuable
gemstones, Swarovski deposits provide the stunning twinkle in order to any
kind of jewelry, actually official eveningwear designs. These people may be
used to spice up easy denim jeans as well as golf tee clothing or even
provide you with a contact associated with glamour as well as individualism
at the office. Via their own pure flexibility, absolutely no question they
stay the perennial favorite within jewelry
making.[url=http://www.bijouxswarovskiboutique.com/]swarovski[/url] have
been used in jewellery making for over a century and their continued
popularity is testament to the sheer quality and range of jewellery you can
design incorporating these iridescent gems.
http://www.bijouxswarovskiboutique.com/ 



--
View this message in context: 
http://git.661346.n2.nabble.com/Typically-the-swarovski-presents-a-variety-of-less-significant-tp7572430.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


links of london sale has become a 2010 usual list the model owners

2012-11-29 Thread qunima144
The organization right now offers shops in the united states, North america,
Hong Kong along with the UNITED KINGDOM. The organization attempts to permit
logos of the items by giving room with regard to engravings as well as
embossing, in addition to generating a variety of necklaces for people to
select from to create sweetheart anklet bracelets their very own. The actual
demonstration associated with products is actually outstanding; the
organization prides by itself for making every item unique, by using unique
containers, laces and ribbons as well as bows. This particular provides an
additional sensation associated with luxurious towards the components of
jewelry, producing your own present or even buy even more thrilling.
[url=http://www.cheaplinksoflondonbracelets.co.uk/]links of london
sale[/url] try to inject an element of British eccentricity and a sense of
humour into their ranges,which further adds to their appeal in the UK and
abroad.
http://www.cheaplinksoflondonbracelets.co.uk/ 



--
View this message in context: 
http://git.661346.n2.nabble.com/links-of-london-sale-has-become-a-2010-usual-list-the-model-owners-tp7572431.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] t4049: avoid test failures on filemode challenged file systems (Windows)

2012-11-29 Thread Johannes Sixt
Am 11/29/2012 21:48, schrieb Junio C Hamano:
> I've tested this with the testpen set on vfat mounted on my Linux
> box, ...
> and it seems to work OK,

Works well here on Windows, too.

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