Nike shoes for men online UK
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
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.
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
опрятность в жилище и коттедже за небольшие
Наведем чистоту и порядок у Вас апартаментов, за разумные денежки. 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
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
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
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
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
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
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