Re: [PATCH] clone: fix repo name when cloning a server's root
- From
Patrick Steinhardt <ps@pks.im>
- Date
- Jul 27, 2015, 12:59 UTC
- Message-ID
- <20150727125923.GA800@pks-xps>
- In-Reply-To
- <CACsJy8C0xzTvxMo7=pLFJyu8Yaqm_nz1qVXMFFo9ubQE-dYYSw@mail.gmail.com>
On Mon, Jul 27, 2015 at 07:51:30PM +0700, Duy Nguyen wrote:
Show 18 quoted lines
> On Mon, Jul 27, 2015 at 6:48 PM, Patrick Steinhardt <ps@pks.im> wrote: > > When cloning a repository from a server's root, that is the URL's > > path component is a '/' only, we fail to generate a sensible > > repository name when the URL contains authentication data. This > > is especially bad when cloning URLs like > > 'ssh://user:passwd@example.com/', which results in a repository > > 'passwd@example.com' being created. > > > > Improve the behavior by also regarding '@'-signs as a separator > > when scanning the URL. In the mentioned case this would instead > > result in a directory 'example.com' being created. > > My initial reaction was, if you put password on the command line, you > deserve it. However, as we improve this heuristics, perhaps it's > better to export parse_connect_url() from connect.c and use it here? > We would have more robust parsing. You can create a repo named > example.com given the url ssh://user:pass@example.com:123/. Maybe it's > overkill?
Sure, specifying passwords on command line should not be done easily. Still those heuristics fail for everything that does not include an additional [:/] when the URL's path is empty. So I guess using parse_connect_url() would be the most sane solution for this, as it will also fix the case when you specify a port, which would currently use the port as directory name. I'll whip up a new version that uses parse_connect_url().
Show 9 quoted lines
> > Signed-off-by: Patrick Steinhardt <ps@pks.im> > > --- > > I was not able to come by with a useful test as that would > > require being able to clone a root directory. I couldn't find > > anything in the current tests that looks like what I want to do. > > Does anybody have an idea on how to achieve this? > > There's t/t1509/prepare-chroot.sh that will prepare a chroot for this > purpose. You'll need linux, busybox and chroot permission.
Thanks for the hint.
Patrick