On Mon, Jul 27, 2015 at 07:51:30PM +0700, Duy Nguyen wrote: > On Mon, Jul 27, 2015 at 6:48 PM, Patrick Steinhardt 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(). > > Signed-off-by: Patrick Steinhardt > > --- > > 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