Nike shoes for men online UK

2013-10-05 Thread eorinw
Da wird eine romantische Fantasie für Frauen , der Brief , verfügt Tiffany
eine magische Energie. Zahlreiche Schmuckstücke für Tiffany  Co. hat bekam
die Herzen von einigen hundert Jahren erworben .  Tiffany Schmuck online
günstig http://www.markenschmuckonlineoutlet.de/tiffany-schmuck   sanfte
Schönheit mit Stil und auch Romantik und haben sich zu den Frauen in Mode.
Für Hollywood Superstar bleibt Tiffany Schmuck sehr attraktiv. In einigen
wichtigen Fällen , die brillante Figur knickknack Verkauf , geschnitzt mit
Tiffany, wird es in der Regel beobachtet mit den Sternen leuchten.
Die wichtigste Regel ist Ihre Juwelen kann nicht gemeinsam mit Gefühl noch
fühlen absolut verschieden von Ihrem Gesicht Kontur Wenn bei Ihnen rundes
Gesicht haben ! das Ziel und Wunsch ist es, zusätzlich slim Gesichtsbereich
! so was geben das Aussehen der Dimension, die Sie in der Länge Halsketten !
Es ist am besten zu bleiben weg von Colliers Tiffany Outlet und auch noch
große, dicke Perlen der Nähe des Halses , die eine Dichte an den Hals
hinzufügen , also einen Tipp für diejenigen mit runden Begegnungen.
insgesamt für alles, was Länge bringt aussehen ! Denn für Ohrringe, etwas
lange das Interesse zieht sich eher um ist wirklich schmeichelhaft für eine
Dame durch ein rundes Gesicht! Ein Tiffany Outlet Online Tropfenohrrings
sieht unglaublich , weil Rechtecke und Quadrate zusätzlich tun !
Tiffany uk konnotiert Trend und auch High-End. Tolle Verarbeitung ,
brillante Substanz und zusätzlich schöne Form von ein paar unserer Website
gewährleistet. Der Schmuck ist in der Regel verwendet zu sehen, dass
Geschenke in Bezug auf verschiedene andere Leute. Tiffany kann ein
Hersteller in Bezug auf nicht wirklich nur phänomenal, Schmuck , kann es
machen Sie elegant, edel und zusätzlich unkomplizierte und zusätzlich jede
Art von dem, was eine Person vorstellen . Jeder könnte in der
Tiffany-Schmuck -Account verbinden! Erlauben Sie uns zu bekommen oder
Schmuck , Schmuck Form , obwohl bietet eine Industrie in unsere Bräuche
geschaffen. Tiffany neben Corp ist wirklich eine definitive eines lokalen
ganze Menge Führung überall verfügbar mit modischen Schmuck verbunden.
Die überwiegende Mehrheit der Menschen diskutieren Sie mit , was die
Unterschiede zwischen Schmuck und auch eine Reihe von Schuhen oder Stiefeln
außer es ist selten, Material stecken? Gibt es irgendwelche Unterschiede
zwischen einem teuren Umhang und zusätzlich auf Schmuck zeigt die
Schönheiten der Frau ? Oder vielleicht ist es nur etwa jeder Unterschied
zwischen Schmuck und auch bekannte Marken-Kleidung für Mädchen ? Innerhalb
meiner Meinung nach , ist Schmuck nicht nur besitzen ungewöhnliche Material
, es zusätzlich zahlreiche Bedeutungen von Menschen die besten Wünsche und
auch Träume belastet. Sie sind wirklich in unserem Leben , Vorstellungen und
auch Kulturen verwurzelt. Schmuck ist ein einzigartiges Bild und ferner hat
habe Frauen aus allen Ausgangspunkt der Zivilisation begleitet . Wenn
Schmuck hat sich zu Kleidungsstücken werden , geht es um eine nächste und
auch romantisch Objekt , uns selbst sowie andere in Verbindung zu setzen .
Verschiedene von Parfüm, Schmuck machen kann uns mehr atemberaubend und
zusätzlich attraktiv in der Öffentlichkeit. Menschen können verschiedene
Schmuckstücke , um ihre starken Persönlichkeiten zu zeigen. Tragen Family
Jewels eine Sehnsucht Gefühl, unsere Geschäfte auszudrücken Lieben. Schmuck
kann Ausdruck Menschen die tatsächlichen Emotionen. Durch sie können wir
Visionen von anderen Menschen zu beobachten sind , vielleicht Schmuck könnte
Ihnen sagen, mehr Informationen über die eigene Persönlichkeit. Schmuck sind
sehr sehr wichtig für unser Unternehmen, Existenz , dann, wie man die
ursprünglichen Aussehen jener Modeschmuck zu machen? Das ist ein großes
Problem. Lassen Sie mich Ihnen sagen, eine Methode , um einen Abschnitt der
Mode Platinschmuck zu halten.
Sie sind repliziert und zusätzlich für nachgeahmt einfach nicht ein, sondern
zwei Ursachen , die anfängliche Wesen in jede Anstrengung zur Spitze
Personen. Entweder der bedeutet, wird dafür sorgen, Sie werden einige Ringe
können Sie wählen, um für ein paar Jahre zu belohnen erhalten! . Ältere
Weibchen metallischen  Tiffany Schmuck online
http://www.markenschmuckonlineoutlet.de/tiffany-schmuck   Ringen aus dem
Grund, dass sie sich weniger teuer, wenn man den Stein und zusätzlich Platin
Arten das Paar lange , um im Vergleich zu erwerben. Die Quintessenz dieser
Artikel verwendet tiffany Verkauf sind wirklich in der Regel seine oder ihre
Marke von metallischen Ringen, die sinnvoll sind, verglichen mit Gold-und
Platin -Typen , in der anderen Hand möglicherweise sie sind definitiv nicht
dieses billig.




-
Tiffany Kette günstig kaufen 
Tiffany Schmuck online 
Tiffany Ring online günstig kaufen 
--
View this message in context: 
http://git.661346.n2.nabble.com/Nike-shoes-for-men-online-UK-tp7597253.html
Sent from the git mailing list archive at Nabble.com.
--
To unsubscribe from this list: 

[PATCH] mergetools/diffmerge: support DiffMerge as a git mergetool

2013-10-05 Thread Stefan Saasen
DiffMerge is a non-free (but gratis) tool that supports OS X, Windows and Linux.

See http://www.sourcegear.com/diffmerge/

DiffMerge includes a script `/usr/bin/diffmerge` that can be used to launch the
graphical compare tool.

This change adds mergetool support for DiffMerge and adds 'diffmerge' as an
option to the mergetool help.

Signed-off-by: Stefan Saasen ssaa...@atlassian.com
---
 contrib/completion/git-completion.bash |  2 +-
 git-mergetool--lib.sh  |  2 +-
 mergetools/diffmerge   | 15 +++
 3 files changed, 17 insertions(+), 2 deletions(-)
 create mode 100644 mergetools/diffmerge

diff --git a/contrib/completion/git-completion.bash 
b/contrib/completion/git-completion.bash
index e1b7313..07b0ba5 100644
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -1188,7 +1188,7 @@ _git_diff ()
__git_complete_revlist_file
 }
 
-__git_mergetools_common=diffuse ecmerge emerge kdiff3 meld opendiff
+__git_mergetools_common=diffuse diffmerge ecmerge emerge kdiff3 meld opendiff
tkdiff vimdiff gvimdiff xxdiff araxis p4merge bc3 
codecompare
 
 
diff --git a/git-mergetool--lib.sh b/git-mergetool--lib.sh
index feee6a4..6d0fa3b 100644
--- a/git-mergetool--lib.sh
+++ b/git-mergetool--lib.sh
@@ -250,7 +250,7 @@ list_merge_tool_candidates () {
else
tools=opendiff kdiff3 tkdiff xxdiff meld $tools
fi
-   tools=$tools gvimdiff diffuse ecmerge p4merge araxis bc3 
codecompare
+   tools=$tools gvimdiff diffuse diffmerge ecmerge p4merge araxis 
bc3 codecompare
fi
case ${VISUAL:-$EDITOR} in
*vim*)
diff --git a/mergetools/diffmerge b/mergetools/diffmerge
new file mode 100644
index 000..85ac720
--- /dev/null
+++ b/mergetools/diffmerge
@@ -0,0 +1,15 @@
+diff_cmd () {
+   $merge_tool_path $LOCAL $REMOTE /dev/null 21
+}
+
+merge_cmd () {
+   if $base_present
+   then
+   $merge_tool_path --merge --result=$MERGED \
+   $LOCAL $BASE $REMOTE
+   else
+   $merge_tool_path --merge \
+   --result=$MERGED $LOCAL $REMOTE
+   fi
+   status=$?
+}
-- 
1.8.4.475.g3a5bb13

--
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] mingw-multibyte: fix memory acces violation and path length limits.

2013-10-05 Thread Wataru Noguchi

Hi,

I put following printf logs.

int checkout_entry(struct cache_entry *ce,
   const struct checkout *state, char *topath)
{
static char path[PATH_MAX + 1];
struct stat st;
int len = state-base_dir_len;

if (topath)
return write_entry(ce, topath, state, 1);

memcpy(path, state-base_dir, len);
fprintf(stderr, path: %s\n, path);
fprintf(stderr, len: %d\n, len);
strcpy(path + len, ce-name);
len += ce_namelen(ce);
fprintf(stderr, path: %s\n, path);
fprintf(stderr, len: %d\n, len);
fprintf(stderr, path_max: %d\n, PATH_MAX);


--


crash result

wnoguchi@WIN-72R9044R72V /usr/tmp (master)
$ git clone https://github.com/wnoguchi/mingw-checkout-crash.git a2
Cloning into 'a2'...
remote: Counting objects: 8, done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 8 (delta 0), reused 8 (delta 0)
Unpacking objects: 100% (8/8), done.
Checking connectivity... done
path:
len: 0
path: dummy 1-long-long-long-dirname/dummy 2-long-long
-long-dirname/dummy 3-long-long-long-dirname/dummy 4-l
ong-long-long-dirname/dummy 5-long-long-long-dirname/.txt
len: 302
path_max: 259

crash!!

--

build with

CFLAGS = -g -O2 -fno-inline-small-functions -Wall


wnoguchi@WIN-72R9044R72V /usr/tmp (master)
$ git clone https://github.com/wnoguchi/mingw-checkout-crash.git a3
Cloning into 'a3'...
remote: Counting objects: 8, done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 8 (delta 0), reused 8 (delta 0)
Unpacking objects: 100% (8/8), done.
Checking connectivity... done
path:
len: 0
path: dummy 1-long-long-long-dirname/dummy 2-long-long
-long-dirname/dummy 3-long-long-long-dirname/dummy 4-l
ong-long-long-dirname/dummy 5-long-long-long-dirname/.txt
len: 302
path_max: 259

Warning: Your console font probably doesn't support Unicode. If you experience s
trange characters in the output, consider switching to a TrueType font such as L
ucida Console!

works fine.



this result means actual path byte length over run path buffer?

static char path[PATH_MAX + 1];

hmmm...

I'm not sure why -fno-inline-small-functions works.


(2013/10/04 2:36), Erik Faye-Lund wrote:

On Thu, Oct 3, 2013 at 7:25 PM, Antoine Pelisse apeli...@gmail.com wrote:

I've not followed the thread so much but, in that
entry.c::checkout_entry,() we do:

memcpy(path, state-base_dir, len);
strcpy(path + len, ce-name);

which can of course result in memory violation if PATH is not long enough.



...aaand you're spot on. The following patch illustrates it:

$ /git/git-clone.exe mingw-checkout-crash.git
Cloning into 'mingw-checkout-crash'...
done.
fatal: argh, this won't work!
warning: Clone succeeded, but checkout failed.
You can inspect what was checked out with 'git status'
and retry the checkout with 'git checkout -f HEAD'

---

diff --git a/entry.c b/entry.c
index acc892f..505638e 100644
--- a/entry.c
+++ b/entry.c
@@ -244,6 +244,9 @@ int checkout_entry(struct cache_entry *ce,
   if (topath)
   return write_entry(ce, topath, state, 1);

+ if (len  PATH_MAX || len + strlen(ce-name)  PATH_MAX)
+ die(argh, this won't work!);
+
   memcpy(path, state-base_dir, len);
   strcpy(path + len, ce-name);
   len += ce_namelen(ce);



On Thu, Oct 3, 2013 at 12:26 AM, Wataru Noguchi wnoguchi.0...@gmail.com wrote:

Hi,

At last, I foundfollowing Makefile optimization suppression works fine in my
case.

CFLAGS = -g -O2 -fno-inline-small-functions -Wall

Following optimization option cause crash,

-finline-small-functions

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



--

  Wataru Noguchi
  wnoguchi.0...@gmail.com
  http://wnoguchi.github.io/

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


опрятность в жилище и коттедже за небольшие

2013-10-05 Thread andrey190

Наведем чистоту и порядок у Вас апартаментов, за разумные денежки. 
http://sticker.yadro.ru/go?url=http://www.adshorturl.com/846757
--
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] clone: local URLs are not for ssh

2013-10-05 Thread Matthieu Moy
Torsten Bögershausen tbo...@web.de writes:

  test_expect_success 'cloning myhost:src uses ssh' '
 clear_ssh 
 -   git clone myhost:src ssh-clone 
 +   ! git clone myhost:src ssh-clone 

This succeeds if Git segfaults for example. Please, use test_must_fail
instead of !.

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


[RFC/PATCHv2 2/3] git-svn: Warn about changing default for --prefix in Git v2.0

2013-10-05 Thread Johan Herland
In Git v2.0, we will change the default --prefix for init/clone from
none/empty to origin/ (which causes SVN-tracking branches to be
placed at refs/remotes/origin/* instead of refs/remotes/*).

This patch warns users about the upcoming change, both in the git-svn
manual page, and on stderr when running init/clone in the multi-mode
without providing a --prefix.

Cc: Eric Wong normalper...@yhbt.net
Signed-off-by: Johan Herland jo...@herland.net
---
 Documentation/git-svn.txt | 11 ++-
 git-svn.perl  | 12 +++-
 t/t9117-git-svn-init-clone.sh | 67 +++
 3 files changed, 88 insertions(+), 2 deletions(-)

diff --git a/Documentation/git-svn.txt b/Documentation/git-svn.txt
index da00671..59e912e 100644
--- a/Documentation/git-svn.txt
+++ b/Documentation/git-svn.txt
@@ -86,6 +86,14 @@ COMMANDS
(refs/remotes/$remote/*). Setting a prefix is also useful
if you wish to track multiple projects that share a common
repository.
++
+NOTE: In Git v2.0, the default prefix will CHANGE from  (no prefix)
+to origin/. This is done to put SVN-tracking refs at
+refs/remotes/origin/* instead of refs/remotes/*, and make them
+more compatible with how Git's own remote-tracking refs are organized
+(i.e. refs/remotes/$remote/*). You can enjoy the same benefits today,
+by using the --prefix option.
+
 --ignore-paths=regex;;
When passed to 'init' or 'clone' this regular expression will
be preserved as a config key.  See 'fetch' for a description
@@ -986,7 +994,8 @@ placed at refs/remotes/origin/* rather than the default 
refs/remotes/*.
 The former is more compatible with the layout of Git's regular
 remote-tracking refs (refs/remotes/$remote/*), and may potentially
 prevent similarly named SVN branches and Git remotes from clobbering
-eachother.
+eachother. In Git v2.0 the default prefix used (i.e. when no --prefix
+is given) will change from  (no prefix) to origin/.
 
 When using multiple --branches or --tags, 'git svn' does not automatically
 handle name collisions (for example, if two branches from different paths have
diff --git a/git-svn.perl b/git-svn.perl
index ff1ce3d..0443a4f 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -1389,7 +1389,17 @@ sub cmd_multi_init {
usage(1);
}
 
-   $_prefix = '' unless defined $_prefix;
+   unless (defined $_prefix) {
+   $_prefix = '';
+   warn EOF
+WARNING: --prefix is not given, defaulting to empty prefix.
+ This is probably not what you want! In order to stay compatible
+ with regular remote-tracking refs, provide a prefix like
+ --prefix=origin/ (remember the trailing slash), which will cause
+ the SVN-tracking refs to be placed at refs/remotes/origin/*.
+NOTE: In Git v2.0, the default prefix will change from empty to 'origin/'.
+EOF
+   }
if (defined $url) {
$url = canonicalize_url($url);
init_subdir(@_);
diff --git a/t/t9117-git-svn-init-clone.sh b/t/t9117-git-svn-init-clone.sh
index b7ef9e2..1c8d049 100755
--- a/t/t9117-git-svn-init-clone.sh
+++ b/t/t9117-git-svn-init-clone.sh
@@ -52,4 +52,71 @@ test_expect_success 'clone to target directory with 
--stdlayout' '
rm -rf target
'
 
+test_expect_success 'init without -s/-T/-b/-t does not warn' '
+   test ! -d trunk 
+   git svn init $svnrepo/project/trunk trunk 2warning 
+   test_must_fail grep -q prefix warning 
+   rm -rf trunk 
+   rm -f warning
+   '
+
+test_expect_success 'clone without -s/-T/-b/-t does not warn' '
+   test ! -d trunk 
+   git svn clone $svnrepo/project/trunk 2warning 
+   test_must_fail grep -q prefix warning 
+   rm -rf trunk 
+   rm -f warning
+   '
+
+test_svn_configured_prefix () {
+   prefix=$1
+   cat expect EOF
+project/trunk:refs/remotes/${prefix}trunk
+project/branches/*:refs/remotes/${prefix}*
+project/tags/*:refs/remotes/${prefix}tags/*
+EOF
+   test ! -f actual 
+   git --git-dir=project/.git config svn-remote.svn.fetch actual 
+   git --git-dir=project/.git config svn-remote.svn.branches actual 
+   git --git-dir=project/.git config svn-remote.svn.tags actual 
+   test_cmp expect actual 
+   rm -f expect actual
+}
+
+test_expect_success 'init with -s/-T/-b/-t without --prefix warns' '
+   test ! -d project 
+   git svn init -s $svnrepo/project project 2warning 
+   grep -q prefix warning 
+   test_svn_configured_prefix  
+   rm -rf project 
+   rm -f warning
+   '
+
+test_expect_success 'clone with -s/-T/-b/-t without --prefix warns' '
+   test ! -d project 
+   git svn clone -s $svnrepo/project 2warning 
+   grep -q prefix warning 
+   test_svn_configured_prefix  
+   rm -rf project 
+   rm -f warning
+   '
+
+test_expect_success 'init with -s/-T/-b/-t and --prefix does not warn' '
+   test ! -d project 
+   git 

[RFC/PATCHv2 3/3] Git 2.0: git svn: Set default --prefix='origin/' if --prefix is not given

2013-10-05 Thread Johan Herland
git-svn by default puts its Subversion-tracking refs directly in
refs/remotes/*. This runs counter to Git's convention of using
refs/remotes/$remote/* for storing remote-tracking branches.

Furthermore, combining git-svn with regular git remotes run the risk of
clobbering refs under refs/remotes (e.g. if you have a git remote
called tags with a v1 branch, it will overlap with the git-svn's
tracking branch for the v1 tag from Subversion.

Even though the git-svn refs stored in refs/remotes/* are not proper
remote-tracking branches (since they are not covered by a proper git
remote's refspec), they clearly represent a similar concept, and would
benefit from following the same convention.

For example, if git-svn tracks Subversion branch foo at
refs/remotes/foo, and you create a local branch refs/heads/foo to add
some commits to be pushed back to Subversion (using git svn dcommit),
then it is clearly unhelpful of Git to throw

  warning: refname 'foo' is ambiguous.

every time you checkout, rebase, or otherwise interact with the branch.

The existing workaround for this is to supply the --prefix=quux/ to
git svn init/clone, so that git-svn's tracking branches end up in
refs/remotes/quux/* instead of refs/remotes/*. However, encouraging
users to specify --prefix to work around a design flaw in git-svn is
suboptimal, and not a long term solution to the problem. Instead,
git-svn should default to use a non-empty prefix that saves
unsuspecting users from the inconveniences described above.

This patch will only affect newly created git-svn setups, as the
--prefix option only applies to git svn init (and git svn clone).
Existing git-svn setups will continue with their existing (lack of)
prefix. Also, if anyone somehow prefers git-svn's old layout, they
can recreate that by explicitly passing an empty prefix (--prefix )
on the git svn init/clone command line.

The patch changes the default value for --prefix from  to origin/,
updates the git-svn manual page, and fixes the fallout in the git-svn
testcases.

(Note that this patch might be easier to review using the --word-diff
and --word-diff-regex=. diff options.)

Suggested-by: Thomas Ferris Nicolaisen tfn...@gmail.com
Cc: Eric Wong normalper...@yhbt.net
Signed-off-by: Johan Herland jo...@herland.net
---
 Documentation/git-svn.txt| 19 +
 git-svn.perl | 12 +-
 t/t9107-git-svn-migrate.sh   | 54 
 t/t9114-git-svn-dcommit-merge.sh |  4 +-
 t/t9116-git-svn-log.sh   | 46 ++--
 t/t9117-git-svn-init-clone.sh| 16 +++
 t/t9118-git-svn-funky-branch-names.sh| 20 -
 t/t9120-git-svn-clone-with-percent-escapes.sh| 14 +++---
 t/t9125-git-svn-multi-glob-branch-names.sh   |  6 +--
 t/t9128-git-svn-cmd-branch.sh| 18 
 t/t9135-git-svn-moved-branch-empty-file.sh   |  2 +-
 t/t9141-git-svn-multiple-branches.sh | 28 ++--
 t/t9145-git-svn-master-branch.sh |  2 +-
 t/t9155-git-svn-fetch-deleted-tag.sh |  4 +-
 t/t9156-git-svn-fetch-deleted-tag-2.sh   |  6 +--
 t/t9161-git-svn-mergeinfo-push.sh| 22 +-
 t/t9163-git-svn-reset-clears-caches.sh   |  4 +-
 t/t9165-git-svn-fetch-merge-branch-of-branch.sh  |  2 +-
 t/t9166-git-svn-fetch-merge-branch-of-branch2.sh |  2 +-
 t/t9167-git-svn-cmd-branch-subproject.sh |  2 +-
 20 files changed, 128 insertions(+), 155 deletions(-)

diff --git a/Documentation/git-svn.txt b/Documentation/git-svn.txt
index 59e912e..43da05a 100644
--- a/Documentation/git-svn.txt
+++ b/Documentation/git-svn.txt
@@ -86,14 +86,7 @@ COMMANDS
(refs/remotes/$remote/*). Setting a prefix is also useful
if you wish to track multiple projects that share a common
repository.
-+
-NOTE: In Git v2.0, the default prefix will CHANGE from  (no prefix)
-to origin/. This is done to put SVN-tracking refs at
-refs/remotes/origin/* instead of refs/remotes/*, and make them
-more compatible with how Git's own remote-tracking refs are organized
-(i.e. refs/remotes/$remote/*). You can enjoy the same benefits today,
-by using the --prefix option.
-
+   By default, the prefix is set to 'origin/'.
 --ignore-paths=regex;;
When passed to 'init' or 'clone' this regular expression will
be preserved as a config key.  See 'fetch' for a description
@@ -987,16 +980,6 @@ without giving any repository layout options.  If the full 
history with
 branches and tags is required, the options '--trunk' / '--branches' /
 '--tags' must be used.
 
-When using the options for describing the repository layout (--trunk,
---tags, --branches, --stdlayout), please also specify the --prefix
-option (e.g. '--prefix=origin/') to cause your SVN-tracking refs to be
-placed at refs/remotes/origin/* rather than the default refs/remotes/*.
-The 

[RFC/PATCHv2 1/3] Documentation/git-svn: Promote the use of --prefix in docs + examples

2013-10-05 Thread Johan Herland
Currently, the git-svn defaults to using an empty prefix, which ends
up placing the SVN-tracking refs directly in refs/remotes/*. This
placement runs counter to Git's convention of placing remote-tracking
branches in refs/remotes/$remote/*.

Furthermore, combining git-svn with regular Git remotes run the risk
of clobbering refs under refs/remotes (e.g. if you have a git remote
called tags with a v1 branch, it will overlap with the git-svn's
tracking branch for the v1 tag from Subversion.

Even though the git-svn refs stored in refs/remotes/* are not proper
remote-tracking branches (since they are not covered by a proper git
remote's refspec), they clearly represent a similar concept, and would
benefit from following the same convention.

For example, if git-svn tracks Subversion branch foo at
refs/remotes/foo, and you create a local branch refs/heads/foo to add
some commits to be pushed back to Subversion (using git svn dcommit),
then it is clearly unhelpful of Git to throw

  warning: refname 'foo' is ambiguous.

every time you checkout, rebase, or otherwise interact with the branch.

At this time, the user is better off using the --prefix=foo/ (the
trailing slash is important) to git svn init/clone, to cause the
SVN-tracking refs to be placed at refs/remotes/foo/* instead of
refs/remotes/*. This patch updates the documentation to encourage
use of --prefix.

This is also in preparation for changing the default value of --prefix
at some point in the future.

Cc: Eric Wong normalper...@yhbt.net
Signed-off-by: Johan Herland jo...@herland.net
---
 Documentation/git-svn.txt | 35 +--
 1 file changed, 25 insertions(+), 10 deletions(-)

diff --git a/Documentation/git-svn.txt b/Documentation/git-svn.txt
index 4dd3bcb..da00671 100644
--- a/Documentation/git-svn.txt
+++ b/Documentation/git-svn.txt
@@ -79,8 +79,13 @@ COMMANDS
trailing slash, so be sure you include one in the
argument if that is what you want.  If --branches/-b is
specified, the prefix must include a trailing slash.
-   Setting a prefix is useful if you wish to track multiple
-   projects that share a common repository.
+   Setting a prefix (with a trailing slash) is strongly
+   encouraged in any case, as your SVN-tracking refs will
+   then be located at refs/remotes/$prefix/*, which is
+   compatible with Git's own remote-tracking ref layout
+   (refs/remotes/$remote/*). Setting a prefix is also useful
+   if you wish to track multiple projects that share a common
+   repository.
 --ignore-paths=regex;;
When passed to 'init' or 'clone' this regular expression will
be preserved as a config key.  See 'fetch' for a description
@@ -804,16 +809,16 @@ Tracking and contributing to an entire Subversion-managed 
project
 
 
 # Clone a repo with standard SVN directory layout (like git clone):
-   git svn clone http://svn.example.com/project --stdlayout
+   git svn clone http://svn.example.com/project --stdlayout --prefix svn/
 # Or, if the repo uses a non-standard directory layout:
-   git svn clone http://svn.example.com/project -T tr -b branch -t tag
+   git svn clone http://svn.example.com/project -T tr -b branch -t tag 
--prefix svn/
 # View all branches and tags you have cloned:
git branch -r
 # Create a new branch in SVN
 git svn branch waldo
 # Reset your master to trunk (or any other branch, replacing 'trunk'
 # with the appropriate name):
-   git reset --hard remotes/trunk
+   git reset --hard svn/trunk
 # You may only dcommit to one branch/tag/trunk at a time.  The usage
 # of dcommit/rebase/show-ignore should be the same as above.
 
@@ -827,7 +832,7 @@ have each person clone that repository with 'git clone':
 
 
 # Do the initial import on a server
-   ssh server cd /pub  git svn clone http://svn.example.com/project
+   ssh server cd /pub  git svn clone http://svn.example.com/project 
[options...]
 # Clone locally - make sure the refs/remotes/ space matches the server
mkdir project
cd project
@@ -840,8 +845,9 @@ have each person clone that repository with 'git clone':
git config --remove-section remote.origin
 # Create a local branch from one of the branches just fetched
git checkout -b master FETCH_HEAD
-# Initialize 'git svn' locally (be sure to use the same URL and -T/-b/-t 
options as were used on server)
-   git svn init http://svn.example.com/project
+# Initialize 'git svn' locally (be sure to use the same URL and
+# --stdlayout/-T/-b/-t/--prefix options as were used on server)
+   git svn init http://svn.example.com/project [options...]
 # Pull the latest changes from Subversion
git svn rebase
 

GSS-Negotiate authentication requires that all data fit into postbuffer

2013-10-05 Thread brian m. carlson
One thing I just noticed is that if git is using GSS-Negotiate
authentication, the entire POST contents have to fit into however much
memory is specified by http.postbuffer:

  vauxhall ok % git push https://b...@git.crustytoothpaste.net/git/bmc/test.git 
development
  Counting objects: 37994, done.
  Delta compression using up to 4 threads.
  Compressing objects: 100% (10683/10683), done.
  Writing objects: 100% (37994/37994), 9.15 MiB | 4.45 MiB/s, done.
  Total 37994 (delta 26760), reused 37633 (delta 26467)
  Unable to rewind rpc post data - try increasing http.postBuffer
  Password for 'https://b...@git.crustytoothpaste.net': 

GSS-Negotiate authentication always requires a rewind with CURL.

The remote in question only supports Negotiate authentication, so
prompting for a password in this case isn't going to help.  I'm probably
going to look into this over the next couple of days, but two things
need to be done here: 1) do not prompt for a password if only Negotiate
authentication is requested, since it just won't work, and 2) recreate
the data as needed if we have to rewind, since otherwise pushing a fresh
copy of the Linux kernel repo simply isn't going to work as the buffer
will have to be too large.  An alternative is to send a small amount of
data, smaller than the postbuffer, in the first chunk and only fail to
rewind if the second or subsequent chunks need rewinding.

-- 
brian m. carlson / brian with sandals: Houston, Texas, US
+1 832 623 2791 | http://www.crustytoothpaste.net/~bmc | My opinion only
OpenPGP: RSA v4 4096b: 88AC E9B2 9196 305B A994 7552 F1BA 225C 0223 B187


signature.asc
Description: Digital signature


[PATCH] log_tree_diff: die when we fail to parse a commit

2013-10-05 Thread Jeff King
We currently call parse_commit and then assume we can
dereference the resulting tree struct field. If parsing
failed, however, that field is NULL and we end up
segfaulting.

Instead of a segfault, let's print an error message and die
a little more gracefully.

Note that this should never happen in practice, but may
happen in a corrupt repository (or when accessing objects
not connected to the reachable history, whose parents may be
subject to pruning).

Signed-off-by: Jeff King p...@peff.net
---
Not a huge deal, since we are terminating the program either way. There
are other places in the code with a bare parse_commit that could
probably use the same treatment. I didn't investigate them, but they
could easily build on the parse_commit_or_die here if somebody wants to
follow up.

 commit.c   | 7 +++
 commit.h   | 1 +
 log-tree.c | 6 +++---
 3 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/commit.c b/commit.c
index de16a3c..51a9bbc 100644
--- a/commit.c
+++ b/commit.c
@@ -341,6 +341,13 @@ int parse_commit(struct commit *item)
return ret;
 }
 
+void parse_commit_or_die(struct commit *item)
+{
+   if (parse_commit(item))
+   die(unable to parse commit %s,
+   item ? sha1_to_hex(item-object.sha1) : (null));
+}
+
 int find_commit_subject(const char *commit_buffer, const char **subject)
 {
const char *eol;
diff --git a/commit.h b/commit.h
index bd841f4..934af88 100644
--- a/commit.h
+++ b/commit.h
@@ -49,6 +49,7 @@ int parse_commit(struct commit *item);
 
 int parse_commit_buffer(struct commit *item, const void *buffer, unsigned long 
size);
 int parse_commit(struct commit *item);
+void parse_commit_or_die(struct commit *item);
 
 /* Find beginning and length of commit subject. */
 int find_commit_subject(const char *commit_buffer, const char **subject);
diff --git a/log-tree.c b/log-tree.c
index 8534d91..e958d07 100644
--- a/log-tree.c
+++ b/log-tree.c
@@ -734,7 +734,7 @@ static int log_tree_diff(struct rev_info *opt, struct 
commit *commit, struct log
if (!opt-diff  !DIFF_OPT_TST(opt-diffopt, EXIT_WITH_STATUS))
return 0;
 
-   parse_commit(commit);
+   parse_commit_or_die(commit);
sha1 = commit-tree-object.sha1;
 
/* Root commit? */
@@ -759,7 +759,7 @@ static int log_tree_diff(struct rev_info *opt, struct 
commit *commit, struct log
 * parent, showing summary diff of the others
 * we merged _in_.
 */
-   parse_commit(parents-item);
+   parse_commit_or_die(parents-item);
diff_tree_sha1(parents-item-tree-object.sha1,
   sha1, , opt-diffopt);
log_tree_diff_flush(opt);
@@ -774,7 +774,7 @@ static int log_tree_diff(struct rev_info *opt, struct 
commit *commit, struct log
for (;;) {
struct commit *parent = parents-item;
 
-   parse_commit(parent);
+   parse_commit_or_die(parent);
diff_tree_sha1(parent-tree-object.sha1,
   sha1, , opt-diffopt);
log_tree_diff_flush(opt);
-- 
1.8.4.1.4.gf327177
--
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