{"thread":{"id":"12308","subject":"[PATCHv2] clone: support cloning full bundles","startedAt":"2008-02-25T10:12:29Z","lastAt":"2008-02-29T04:27:51Z","messageCount":12,"participants":["Santi Béjar","Junio C Hamano","Daniel Barkalow","Johannes Schindelin","Mark Levedahl"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"69878","messageId":"1203934349-12125-1-git-send-email-sbejar@gmail.com","threadId":"12308","inReplyTo":null,"subject":"[PATCHv2] clone: support cloning full bundles","fromName":"Santi Béjar","fromEmail":"sbejar@gmail.com","sentAt":"2008-02-25T10:12:29Z","receivedAt":"2008-02-25T10:12:29Z","isPatch":false,"sender":{"key":"santi@agolina.net","avatar":null},"body":"Signed-off-by: Santi Béjar <sbejar@gmail.com>\n---\n\nHi *,\n\n  while waiting for the C port of git-clone I've updated my patch to\nsupport bundles in \"git clone\".\n\nSanti\n\n git-clone.sh           |   17 +++++++++++++----\n t/t5701-clone-local.sh |   11 +++++++++++\n 2 files changed, 24 insertions(+), 4 deletions(-)\n\ndiff --git a/git-clone.sh b/git-clone.sh\nindex 0d686c3..2efb947 100755\n--- a/git-clone.sh\n+++ b/git-clone.sh\n@@ -210,11 +210,14 @@ if base=$(get_repo_base \"$repo\"); then\n \tthen\n \t\tlocal=yes\n \tfi\n+elif [ -f \"$repo\" ] ; then\n+\tcase \"$repo\" in /*);; *) repo=\"$PWD/$repo\" ; esac\n fi\n \n dir=\"$2\"\n # Try using \"humanish\" part of source repo if user didn't specify one\n [ -z \"$dir\" ] && dir=$(echo \"$repo\" | sed -e 's|/$||' -e 's|:*/*\\.git$||' -e 's|.*[/:]||g')\n+[ -f \"$dir\" ] && dir=$(expr \"$repo\" : '.*/\\([^/]*\\)\\.[^/]*')\n [ -e \"$dir\" ] && die \"destination directory '$dir' already exists.\"\n [ yes = \"$bare\" ] && unset GIT_WORK_TREE\n [ -n \"$GIT_WORK_TREE\" ] && [ -e \"$GIT_WORK_TREE\" ] &&\n@@ -364,11 +367,17 @@ yes)\n \t\tfi\n \t\t;;\n \t*)\n-\t\tcase \"$upload_pack\" in\n-\t\t'') git-fetch-pack --all -k $quiet $depth $no_progress \"$repo\";;\n-\t\t*) git-fetch-pack --all -k $quiet \"$upload_pack\" $depth $no_progress \"$repo\" ;;\n-\t\tesac >\"$GIT_DIR/CLONE_HEAD\" ||\n+\t\tif [ -f \"$repo\" ] ; then\n+\t\t\tgit bundle unbundle \"$repo\" > \"$GIT_DIR/CLONE_HEAD\" ||\n+\t\t\tdie \"unbundle from '$repo' failed.\"\n+\t\telse\n+\t\t\tcase \"$upload_pack\" in\n+\t\t\t'') git-fetch-pack --all -k $quiet $depth $no_progress \"$repo\";;\n+\t\t\t*) git-fetch-pack --all -k \\\n+\t\t\t\t$quiet \"$upload_pack\" $depth $no_progress \"$repo\" ;;\n+\t\t\tesac >\"$GIT_DIR/CLONE_HEAD\" ||\n \t\t\tdie \"fetch-pack from '$repo' failed.\"\n+\t\tfi\n \t\t;;\n \tesac\n \t;;\ndiff --git a/t/t5701-clone-local.sh b/t/t5701-clone-local.sh\nindex 59a165a..8a8e65c 100755\n--- a/t/t5701-clone-local.sh\n+++ b/t/t5701-clone-local.sh\n@@ -9,6 +9,7 @@ test_expect_success 'preparing origin repository' '\n \t: >file && git add . && git commit -m1 &&\n \tgit clone --bare . a.git &&\n \tgit clone --bare . x &&\n+\tgit bundle create b1.bundle --all HEAD &&\n \ttest \"$(GIT_CONFIG=a.git/config git config --bool core.bare)\" = true &&\n \ttest \"$(GIT_CONFIG=x/config git config --bool core.bare)\" = true\n '\n@@ -71,4 +72,14 @@ test_expect_success 'local clone of repo with nonexistent ref in HEAD' '\n \tgit fetch &&\n \ttest ! -e .git/refs/remotes/origin/HEAD'\n \n+test_expect_success 'bundle clone with suffix' '\n+\tcd \"$D\" &&\n+\tgit clone b1.bundle\n+'\n+\n+test_expect_success 'bundle clone' '\n+\tcd \"$D\" &&\n+\tgit clone b1.bundle bdl1\n+'\n+\n test_done\n-- \n1.5.4.3.293.gac81\n"},{"id":"69909","messageId":"7vlk58j0k1.fsf@gitster.siamese.dyndns.org","threadId":"12308","inReplyTo":"1203934349-12125-1-git-send-email-sbejar@gmail.com","subject":"Re: [PATCHv2] clone: support cloning full bundles","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2008-02-25T19:30:54Z","receivedAt":"2008-02-25T19:30:54Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Santi Béjar <sbejar@gmail.com> writes:\n\n> Signed-off-by: Santi Béjar <sbejar@gmail.com>\n> ---\n>\n> Hi *,\n>\n>   while waiting for the C port of git-clone I've updated my patch to\n> support bundles in \"git clone\".\n\nI do not recall the v1 round of this patch, but it does not look\ntoo bad.\n\nI was hoping, however, if we can replace \"git fetch-pack\" there\nwith \"git-fetch\" so that you do not have to have the if\nconditional based on \"$repo\"'s type.  Isn't \"git fetch\" capable\nof fetching from a bundle already?\n"},{"id":"69919","messageId":"8aa486160802251229x778c7427nd51093bc23ec6c8c@mail.gmail.com","threadId":"12308","inReplyTo":"7vlk58j0k1.fsf@gitster.siamese.dyndns.org","subject":"Re: [PATCHv2] clone: support cloning full bundles","fromName":"Santi Béjar","fromEmail":"sbejar@gmail.com","sentAt":"2008-02-25T20:29:22Z","receivedAt":"2008-02-25T20:29:22Z","isPatch":false,"sender":{"key":"santi@agolina.net","avatar":null},"body":"On Mon, Feb 25, 2008 at 8:30 PM, Junio C Hamano <gitster@pobox.com> wrote:\n> Santi Béjar <sbejar@gmail.com> writes:\n>\n>  > Signed-off-by: Santi Béjar <sbejar@gmail.com>\n>  > ---\n>  >\n>  > Hi *,\n>  >\n>  >   while waiting for the C port of git-clone I've updated my patch to\n>  > support bundles in \"git clone\".\n>\n>  I do not recall the v1 round of this patch, but it does not look\n>  too bad.\n\nWell, it was during the freeze, you probably had more important things to do :-)\n\nhttp://article.gmane.org/gmane.comp.version-control.git/68035\n\n>\n>  I was hoping, however, if we can replace \"git fetch-pack\" there\n>  with \"git-fetch\" so that you do not have to have the if\n>  conditional based on \"$repo\"'s type.  Isn't \"git fetch\" capable\n>  of fetching from a bundle already?\n>\n\n\"git fetch\" is capable to fetch bundles, but to use \"git fetch\"\ninstead of \"git fetch-pack\"\nyou need to reorganize other things (not the same output, to download\nall the refs you need to write a config with refs/heads/*:..., \"git\nfetch\" does not have a --no-progress), so I opted for\na minimal path (and not break the most used path :-).\n\nI sent another patch to convert every transport to \"git fetch\" in:\n\nhttp://article.gmane.org/gmane.comp.version-control.git/65669\n\nbut it had some problems (ups now I see I didn't answer to Johannes\nSchindelin's reply, sorry, or I cannot find it). At the end as\ngit-clone was going to be ported to C...\n\nSanti\n"},{"id":"69925","messageId":"7vk5kshhu7.fsf@gitster.siamese.dyndns.org","threadId":"12308","inReplyTo":"8aa486160802251229x778c7427nd51093bc23ec6c8c@mail.gmail.com","subject":"Re: [PATCHv2] clone: support cloning full bundles","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2008-02-25T21:00:32Z","receivedAt":"2008-02-25T21:00:32Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"\"Santi Béjar\" <sbejar@gmail.com> writes:\n\n> ...\n> you need to reorganize other things (not the same output, to download\n> all the refs you need to write a config with refs/heads/*:..., \"git\n> fetch\" does not have a --no-progress), so I opted for\n> a minimal path (and not break the most used path :-).\n\nThat sounds like a sensible explanation.  As the external\ninterface won't change even if we later do so, let's take this\nversion for 1.5.5.\n\nThanks.\n"},{"id":"70170","messageId":"7v63waqasu.fsf@gitster.siamese.dyndns.org","threadId":"12308","inReplyTo":"1203934349-12125-1-git-send-email-sbejar@gmail.com","subject":"Re: [PATCHv2] clone: support cloning full bundles","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2008-02-27T22:44:33Z","receivedAt":"2008-02-27T22:44:33Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Santi Béjar <sbejar@gmail.com> writes:\n\n> Signed-off-by: Santi Béjar <sbejar@gmail.com>\n> diff --git a/git-clone.sh b/git-clone.sh\n> index 0d686c3..2efb947 100755\n> --- a/git-clone.sh\n> +++ b/git-clone.sh\n> @@ -210,11 +210,14 @@ if base=$(get_repo_base \"$repo\"); then\n>  \tthen\n>  \t\tlocal=yes\n>  \tfi\n> +elif [ -f \"$repo\" ] ; then\n> +\tcase \"$repo\" in /*);; *) repo=\"$PWD/$repo\" ; esac\n>  fi\n>  \n>  dir=\"$2\"\n>  # Try using \"humanish\" part of source repo if user didn't specify one\n>  [ -z \"$dir\" ] && dir=$(echo \"$repo\" | sed -e 's|/$||' -e 's|:*/*\\.git$||' -e 's|.*[/:]||g')\n> +[ -f \"$dir\" ] && dir=$(expr \"$repo\" : '.*/\\([^/]*\\)\\.[^/]*')\n>  [ -e \"$dir\" ] && die \"destination directory '$dir' already exists.\"\n>  [ yes = \"$bare\" ] && unset GIT_WORK_TREE\n>  [ -n \"$GIT_WORK_TREE\" ] && [ -e \"$GIT_WORK_TREE\" ] &&\n\nWhat is this [ -f \"$dir\" ] line doing?  The purpose of these\nlines is:\n\n - The user (might have) said \"clone to $2\";\n\n - If the user didn't, then set dir to humanish part;\n\n - If that exists, we barf.\n\nI do not see any valid reason for an additional logic in this\nsequence when adding a new clone _source_ type.\n\nThe check to see if \"$dir\" _exists_ is even worse.  If the user\nsaid \"clone _to_ this\", then we would not have invented $dir\nbased on the $repo (which is what the user said \"clone _from_\")\nbut used whatever name the user has given us.  The existing\ncheck to barf \"Hey, that explicit location you told me to clone\nto is WRONG!!!\" should not be broken.\n"},{"id":"70175","messageId":"8aa486160802271504r7744422ag290b1f4d1725210f@mail.gmail.com","threadId":"12308","inReplyTo":"7v63waqasu.fsf@gitster.siamese.dyndns.org","subject":"Re: [PATCHv2] clone: support cloning full bundles","fromName":"Santi Béjar","fromEmail":"sbejar@gmail.com","sentAt":"2008-02-27T23:04:29Z","receivedAt":"2008-02-27T23:04:29Z","isPatch":false,"sender":{"key":"santi@agolina.net","avatar":null},"body":"On Wed, Feb 27, 2008 at 11:44 PM, Junio C Hamano <gitster@pobox.com> wrote:\n> Santi Béjar <sbejar@gmail.com> writes:\n>\n>  > Signed-off-by: Santi Béjar <sbejar@gmail.com>\n>\n> > diff --git a/git-clone.sh b/git-clone.sh\n>  > index 0d686c3..2efb947 100755\n>  > --- a/git-clone.sh\n>  > +++ b/git-clone.sh\n>  > @@ -210,11 +210,14 @@ if base=$(get_repo_base \"$repo\"); then\n>  >       then\n>  >               local=yes\n>  >       fi\n>  > +elif [ -f \"$repo\" ] ; then\n>  > +     case \"$repo\" in /*);; *) repo=\"$PWD/$repo\" ; esac\n>  >  fi\n>  >\n>  >  dir=\"$2\"\n>  >  # Try using \"humanish\" part of source repo if user didn't specify one\n>  >  [ -z \"$dir\" ] && dir=$(echo \"$repo\" | sed -e 's|/$||' -e 's|:*/*\\.git$||' -e 's|.*[/:]||g')\n>  > +[ -f \"$dir\" ] && dir=$(expr \"$repo\" : '.*/\\([^/]*\\)\\.[^/]*')\n>  >  [ -e \"$dir\" ] && die \"destination directory '$dir' already exists.\"\n>  >  [ yes = \"$bare\" ] && unset GIT_WORK_TREE\n>  >  [ -n \"$GIT_WORK_TREE\" ] && [ -e \"$GIT_WORK_TREE\" ] &&\n>\n>  What is this [ -f \"$dir\" ] line doing?  The purpose of these\n>  lines is:\n>\n>   - The user (might have) said \"clone to $2\";\n>\n>   - If the user didn't, then set dir to humanish part;\n>\n>   - If that exists, we barf.\n>\n>  I do not see any valid reason for an additional logic in this\n>  sequence when adding a new clone _source_ type.\n>\n>  The check to see if \"$dir\" _exists_ is even worse.  If the user\n>  said \"clone _to_ this\", then we would not have invented $dir\n>  based on the $repo (which is what the user said \"clone _from_\")\n>  but used whatever name the user has given us.  The existing\n>  check to barf \"Hey, that explicit location you told me to clone\n>  to is WRONG!!!\" should not be broken.\n>\n\nOops, I did not thought about that possibility. The check was to be\nable to clone a bundle that was in the local directory. So:\n\n$ git clone git.bundle\n\nclones git.bundle to the directory git. Maybe we can add an && in the\nprevious line, or we can say simply that to clone a bundle in the same\ndirectory you have to specify explicitly where to clone.\n\nIn another patch we could add an \"official\" extension to the bundles\n(the same way as with the repositories \"*.git\") as project.bdl or\nproject.bundle and just remove this extension.\n\nSanti\n"},{"id":"70177","messageId":"8aa486160802271516h7c2c636dna3a9f067fc51da2@mail.gmail.com","threadId":"12308","inReplyTo":"8aa486160802271504r7744422ag290b1f4d1725210f@mail.gmail.com","subject":"Re: [PATCHv2] clone: support cloning full bundles","fromName":"Santi Béjar","fromEmail":"sbejar@gmail.com","sentAt":"2008-02-27T23:16:40Z","receivedAt":"2008-02-27T23:16:40Z","isPatch":false,"sender":{"key":"santi@agolina.net","avatar":null},"body":"On Thu, Feb 28, 2008 at 12:04 AM, Santi Béjar <sbejar@gmail.com> wrote:\n>\n> On Wed, Feb 27, 2008 at 11:44 PM, Junio C Hamano <gitster@pobox.com> wrote:\n>  > Santi Béjar <sbejar@gmail.com> writes:\n>  >\n>  >  > Signed-off-by: Santi Béjar <sbejar@gmail.com>\n>  >\n>  > > diff --git a/git-clone.sh b/git-clone.sh\n>  >  > index 0d686c3..2efb947 100755\n>  >  > --- a/git-clone.sh\n>  >  > +++ b/git-clone.sh\n>  >  > @@ -210,11 +210,14 @@ if base=$(get_repo_base \"$repo\"); then\n>  >  >       then\n>  >  >               local=yes\n>  >  >       fi\n>  >  > +elif [ -f \"$repo\" ] ; then\n>  >  > +     case \"$repo\" in /*);; *) repo=\"$PWD/$repo\" ; esac\n>  >  >  fi\n>  >  >\n>  >  >  dir=\"$2\"\n>  >  >  # Try using \"humanish\" part of source repo if user didn't specify one\n>  >  >  [ -z \"$dir\" ] && dir=$(echo \"$repo\" | sed -e 's|/$||' -e 's|:*/*\\.git$||' -e 's|.*[/:]||g')\n>  >  > +[ -f \"$dir\" ] && dir=$(expr \"$repo\" : '.*/\\([^/]*\\)\\.[^/]*')\n>  >  >  [ -e \"$dir\" ] && die \"destination directory '$dir' already exists.\"\n>  >  >  [ yes = \"$bare\" ] && unset GIT_WORK_TREE\n>  >  >  [ -n \"$GIT_WORK_TREE\" ] && [ -e \"$GIT_WORK_TREE\" ] &&\n>  >\n>  >  What is this [ -f \"$dir\" ] line doing?  The purpose of these\n>  >  lines is:\n>  >\n>  >   - The user (might have) said \"clone to $2\";\n>  >\n>  >   - If the user didn't, then set dir to humanish part;\n>  >\n>  >   - If that exists, we barf.\n>  >\n>  >  I do not see any valid reason for an additional logic in this\n>  >  sequence when adding a new clone _source_ type.\n>  >\n>  >  The check to see if \"$dir\" _exists_ is even worse.  If the user\n>  >  said \"clone _to_ this\", then we would not have invented $dir\n>  >  based on the $repo (which is what the user said \"clone _from_\")\n>  >  but used whatever name the user has given us.  The existing\n>  >  check to barf \"Hey, that explicit location you told me to clone\n>  >  to is WRONG!!!\" should not be broken.\n>  >\n>\n>  Oops, I did not thought about that possibility. The check was to be\n>  able to clone a bundle that was in the local directory. So:\n>\n>  $ git clone git.bundle\n>\n>  clones git.bundle to the directory git. Maybe we can add an && in the\n>  previous line\n\nand check for [ -f \"$repo\" ] insted of [ -f \"$dir\" ]\n\n>  , or we can say simply that to clone a bundle in the same\n>  directory you have to specify explicitly where to clone.\n>\n>  In another patch we could add an \"official\" extension to the bundles\n>  (the same way as with the repositories \"*.git\") as project.bdl or\n>  project.bundle and just remove this extension.\n\nMy preference are in order:\n\n1) define an official extension + the && [ -f \"$repo\" ]\n2) the && [ -f \"$repo\"]\n3) just remove this line\n\nbut not that strong.\n\nSanti\n"},{"id":"70182","messageId":"alpine.LNX.1.00.0802271846180.19665@iabervon.org","threadId":"12308","inReplyTo":"8aa486160802271516h7c2c636dna3a9f067fc51da2@mail.gmail.com","subject":"Re: [PATCHv2] clone: support cloning full bundles","fromName":"Daniel Barkalow","fromEmail":"barkalow@iabervon.org","sentAt":"2008-02-27T23:48:55Z","receivedAt":"2008-02-27T23:48:55Z","isPatch":false,"sender":{"key":"barkalow@iabervon.org","avatar":"https://avatars.githubusercontent.com/u/55364219?v=4"},"body":"On Thu, 28 Feb 2008, Santi Béjar wrote:\n\n> On Thu, Feb 28, 2008 at 12:04 AM, Santi Béjar <sbejar@gmail.com> wrote:\n> >\n> > On Wed, Feb 27, 2008 at 11:44 PM, Junio C Hamano <gitster@pobox.com> wrote:\n> >  > Santi Béjar <sbejar@gmail.com> writes:\n> >  >\n> >  >  > Signed-off-by: Santi Béjar <sbejar@gmail.com>\n> >  >\n> >  > > diff --git a/git-clone.sh b/git-clone.sh\n> >  >  > index 0d686c3..2efb947 100755\n> >  >  > --- a/git-clone.sh\n> >  >  > +++ b/git-clone.sh\n> >  >  > @@ -210,11 +210,14 @@ if base=$(get_repo_base \"$repo\"); then\n> >  >  >       then\n> >  >  >               local=yes\n> >  >  >       fi\n> >  >  > +elif [ -f \"$repo\" ] ; then\n> >  >  > +     case \"$repo\" in /*);; *) repo=\"$PWD/$repo\" ; esac\n> >  >  >  fi\n> >  >  >\n> >  >  >  dir=\"$2\"\n> >  >  >  # Try using \"humanish\" part of source repo if user didn't specify one\n> >  >  >  [ -z \"$dir\" ] && dir=$(echo \"$repo\" | sed -e 's|/$||' -e 's|:*/*\\.git$||' -e 's|.*[/:]||g')\n> >  >  > +[ -f \"$dir\" ] && dir=$(expr \"$repo\" : '.*/\\([^/]*\\)\\.[^/]*')\n> >  >  >  [ -e \"$dir\" ] && die \"destination directory '$dir' already exists.\"\n> >  >  >  [ yes = \"$bare\" ] && unset GIT_WORK_TREE\n> >  >  >  [ -n \"$GIT_WORK_TREE\" ] && [ -e \"$GIT_WORK_TREE\" ] &&\n> >  >\n> >  >  What is this [ -f \"$dir\" ] line doing?  The purpose of these\n> >  >  lines is:\n> >  >\n> >  >   - The user (might have) said \"clone to $2\";\n> >  >\n> >  >   - If the user didn't, then set dir to humanish part;\n> >  >\n> >  >   - If that exists, we barf.\n> >  >\n> >  >  I do not see any valid reason for an additional logic in this\n> >  >  sequence when adding a new clone _source_ type.\n> >  >\n> >  >  The check to see if \"$dir\" _exists_ is even worse.  If the user\n> >  >  said \"clone _to_ this\", then we would not have invented $dir\n> >  >  based on the $repo (which is what the user said \"clone _from_\")\n> >  >  but used whatever name the user has given us.  The existing\n> >  >  check to barf \"Hey, that explicit location you told me to clone\n> >  >  to is WRONG!!!\" should not be broken.\n> >  >\n> >\n> >  Oops, I did not thought about that possibility. The check was to be\n> >  able to clone a bundle that was in the local directory. So:\n> >\n> >  $ git clone git.bundle\n> >\n> >  clones git.bundle to the directory git. Maybe we can add an && in the\n> >  previous line\n> \n> and check for [ -f \"$repo\" ] insted of [ -f \"$dir\" ]\n> \n> >  , or we can say simply that to clone a bundle in the same\n> >  directory you have to specify explicitly where to clone.\n> >\n> >  In another patch we could add an \"official\" extension to the bundles\n> >  (the same way as with the repositories \"*.git\") as project.bdl or\n> >  project.bundle and just remove this extension.\n> \n> My preference are in order:\n> \n> 1) define an official extension + the && [ -f \"$repo\" ]\n> 2) the && [ -f \"$repo\"]\n> 3) just remove this line\n> \n> but not that strong.\n\nThe transport.c determination of a bundle is if it's a local path that \nnames a file, so [ -f \"$repo\" ] is the corresponding test.\n\n\t-Daniel\n*This .sig left intentionally blank*"},{"id":"70185","messageId":"7vpruindag.fsf@gitster.siamese.dyndns.org","threadId":"12308","inReplyTo":"8aa486160802271516h7c2c636dna3a9f067fc51da2@mail.gmail.com","subject":"Re: [PATCHv2] clone: support cloning full bundles","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2008-02-28T00:19:03Z","receivedAt":"2008-02-28T00:19:03Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"\"Santi Béjar\" <sbejar@gmail.com> writes:\n\n> My preference are in order:\n>\n> 1) define an official extension + the && [ -f \"$repo\" ]\n> 2) the && [ -f \"$repo\"]\n> 3) just remove this line\n\nSure.  (1) sounds sane and if you make the extension \".git\",\nthen I do not think you need anything more ;-).  Jokes aside,\ncalling it .bundle or .bndl would be sane.\n\nOpinions?\n"},{"id":"70186","messageId":"alpine.LSU.1.00.0802280024460.22527@racer.site","threadId":"12308","inReplyTo":"7vpruindag.fsf@gitster.siamese.dyndns.org","subject":"Re: [PATCHv2] clone: support cloning full bundles","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2008-02-28T00:26:15Z","receivedAt":"2008-02-28T00:26:15Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Wed, 27 Feb 2008, Junio C Hamano wrote:\n\n> \"Santi Béjar\" <sbejar@gmail.com> writes:\n> \n> > My preference are in order:\n> >\n> > 1) define an official extension + the && [ -f \"$repo\" ]\n> > 2) the && [ -f \"$repo\"]\n> > 3) just remove this line\n> \n> Sure.  (1) sounds sane and if you make the extension \".git\",\n> then I do not think you need anything more ;-).  Jokes aside,\n> calling it .bundle or .bndl would be sane.\n> \n> Opinions?\n\nI like .bundle, obviously (I used it in every single example I gave).\n\nCiao,\nDscho\n\nP.S.: only recently, I found out how useful bundles really are.  Thanks, \nMark, for persisting!\n"},{"id":"70188","messageId":"8aa486160802271632k5c7f14e0q132bd12f53838ed1@mail.gmail.com","threadId":"12308","inReplyTo":"alpine.LSU.1.00.0802280024460.22527@racer.site","subject":"Re: [PATCHv2] clone: support cloning full bundles","fromName":"Santi Béjar","fromEmail":"sbejar@gmail.com","sentAt":"2008-02-28T00:32:41Z","receivedAt":"2008-02-28T00:32:41Z","isPatch":false,"sender":{"key":"santi@agolina.net","avatar":null},"body":"On Thu, Feb 28, 2008 at 1:26 AM, Johannes Schindelin\n<Johannes.Schindelin@gmx.de> wrote:\n>  On Wed, 27 Feb 2008, Junio C Hamano wrote:\n>\n[...]\n\n>  > calling it .bundle or .bndl would be sane.\n>  >\n>  > Opinions?\n>\n>  I like .bundle, obviously (I used it in every single example I gave).\n\n+1\n\nSanti\n"},{"id":"70361","messageId":"47C789C7.3090201@verizon.net","threadId":"12308","inReplyTo":"alpine.LSU.1.00.0802280024460.22527@racer.site","subject":"Re: [PATCHv2] clone: support cloning full bundles","fromName":"Mark Levedahl","fromEmail":"mdl123@verizon.net","sentAt":"2008-02-29T04:27:51Z","receivedAt":"2008-02-29T04:27:51Z","isPatch":false,"sender":{"key":"mdl123@verizon.net","avatar":"https://avatars.githubusercontent.com/u/5302462?v=4"},"body":"Johannes Schindelin wrote:\n> I like .bundle, obviously (I used it in every single example I gave).\n>\n> Ciao,\n> Dscho\n>\n> P.S.: only recently, I found out how useful bundles really are.  Thanks, \n> Mark, for persisting!\n>   \nYou're very welcome, and thank you for the implementation - bundles are \na central part of my workflow.\n\nMark\n"}]}