This is the third version of this patch series. It aims to
improve guessing directory names such that we do not include
authentication data and port numbers in them.

This version drops the patches exposing 'parse_connect_url()' and
instead does the stripping of authentification data and port
inside the URI in 'guess_dir_name()'.

Actually I'm not that happy with the patch as it currently stands
as it requires a lot of complexity to correctly strip the URI
such that we do not mishandle several corner cases. At least I
didn't find any shorter way of doing what I want without breaking
backwards compatibility. I'll try to explain why the more complex
ways of handling the URI are required:

 - The naive way of just adding '@' as path separator would break
   cloning repositories like '/foo/b...@baz.git' (which would
   currently become 'bar@baz' but would become 'baz' only).

 - Skipping the scheme initially is required because without it we
   wouldn't be able to scan until the next dir separator in the
   host part when stripping authentication information.

 - First checking for '/' in the current stripped URI when we
   want to remove the port is required because we do not want to
   strip port numbers when cloning from something like
   '/foo/bar:2222.git' (which would currently become '2222' but
   would then be stripped of the ':2222' part and instead become
   'bar'). Still, this breaks on cloning a bare repository in the
   current dir (e.g. cloning 'bar:2222.git', which should become
   '2222' because it is not a port number but would become
   'bar').

As you can see, there is a lot of complexity in there and I'm not
convinced this is better than just exposing
'parse_connect_url()', which already handles everything for us.
Maybe I'm just being blind for the obvious solution here, though.

Patrick Steinhardt (6):
  tests: fix broken && chains in t1509-root-worktree
  tests: fix cleanup after tests in t1509-root-worktree
  clone: do not include authentication data in guessed dir
  clone: do not use port number as dir name
  clone: abort if no dir name could be guessed
  clone: add tests for cloning with empty path

 builtin/clone.c          | 67 ++++++++++++++++++++++++++++++++++++++++--------
 t/t1509-root-worktree.sh | 51 +++++++++++++++++++++++++++++++++---
 2 files changed, 103 insertions(+), 15 deletions(-)

-- 
2.5.0

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

Reply via email to