[PATCH 3 of 8] match: add the abs() method
Matt Harbison
mharbison72 at gmail.com
Tue Dec 23 18:55:14 CST 2014
On Tue, 23 Dec 2014 17:01:25 -0500, Matt Mackall <mpm at selenic.com> wrote:
> On Tue, 2014-12-23 at 15:56 -0500, Matt Harbison wrote:
>> # HG changeset patch
>> # User Matt Harbison <matt_harbison at yahoo.com>
>> # Date 1417223746 18000
>> # Fri Nov 28 20:15:46 2014 -0500
>> # Node ID aa5998c14c5c8407869cc728e41940130e390ba3
>> # Parent 04de3b9ae56e98740c83ee342b68d735b7e9ec73
>> match: add the abs() method
>>
>> This is a utility to make it easier for subrepos to convert a file name
>> to the
>> full path rooted at the top repository. It can replace the various
>> path joining
>> lambdas, and doesn't require the prefix to be passed into the method
>> that wishes
>> to build such a path. It will also allow making the manner in which
>> absolute
>> subrepo paths are displayed on Windows consistent with the way absolute
>> repo
>> paths are- i.e. with '/' as the separator, instead of the current mix
>> of '\'
>> and '/'.
>
> This is not ideal. First, we _really_ need to stop using os methods in
> core code, especially in furtherance of anything related to Windows:
>
> http://mercurial.selenic.com/wiki/WindowsUTF8Plan
>
> Second, the matcher currently doesn't use os at all, which should be an
> alarm bell: it's intentionally completely OS-agnostic at present. This
> is important because it's used against both working copy and in-history
> paths.
>
> I like the idea of this abs() method, but trying to solve cross-OS slash
> issues at the same time as you introduce it is tying a very heavy boat
> anchor to it.
>
> Also, queuebot sends its regards.
>
I cooked up something that uses vfs, but there is a new import cycle with
match -> scmutil -> match. Obviously it isn't desirable, but I don't know
if it is acceptable. We can probably move most of the match wrapper
methods to the match module (e.g. matchandpats(), etc). But
scmutil.expandpats() also uses a match module method, and I'm not sure it
fits in the match module.
Thoughts?
--Matt
More information about the Mercurial-devel
mailing list