Patchwork [3,of,6] hg: update to use vfs functions in shared destination repository

login
register
mail settings
Submitter Chinmay Joshi
Date June 16, 2014, 4:39 p.m.
Message ID <c74650d0e88db42859b0.1402936783@genesis>
Download mbox | patch
Permalink /patch/5007/
State Superseded
Commit 2ccd71bbd0f72860a02eb491ceb3ef305e0d8a17
Headers show

Comments

Chinmay Joshi - June 16, 2014, 4:39 p.m.
# HG changeset patch
# User Chinmay Joshi <c@chinmayjoshi.com>
# Date 1402932176 -19800
#      Mon Jun 16 20:52:56 2014 +0530
# Node ID c74650d0e88db42859b07e03d4f266eaae91b2a8
# Parent  b230c9509c488d0d2ef0bf9e3375b2ad376153fd
hg: update to use vfs functions in shared destination repository

This patch uses rvfs with base as root of .hg directory in shared destination
repository to update filesystem function with vfs. Some methods are changed to
use vfs functions with rvfs.
Katsunori FUJIWARA - June 19, 2014, 5:26 p.m.
At Mon, 16 Jun 2014 22:09:43 +0530,
Chinmay Joshi wrote:
> 
> # HG changeset patch
> # User Chinmay Joshi <c@chinmayjoshi.com>
> # Date 1402932176 -19800
> #      Mon Jun 16 20:52:56 2014 +0530
> # Node ID c74650d0e88db42859b07e03d4f266eaae91b2a8
> # Parent  b230c9509c488d0d2ef0bf9e3375b2ad376153fd
> hg: update to use vfs functions in shared destination repository
> 
> This patch uses rvfs with base as root of .hg directory in shared destination
> repository to update filesystem function with vfs. Some methods are changed to
> use vfs functions with rvfs.
> 
> diff --git a/mercurial/hg.py b/mercurial/hg.py
> --- a/mercurial/hg.py
> +++ b/mercurial/hg.py
> @@ -173,14 +173,14 @@
>      sharedpath = srcrepo.sharedpath # if our source is already sharing
>  
>      dstvfs = scmutil.vfs(dest, expandpath=True, realpath=True)
> -    roothg = os.path.join(root, '.hg')

"roothg" shouldn't be removed in this patch, because it is still
referred from others until next (#4) patch (see writing 'requires' and
'sharedpath' out below in this patch !)


> +    rvfs = scmutil.vfs(os.path.join(dstvfs.base, '.hg'))

Name of "rvfs" seems to make relation with "dstvfs" weak.

What about "dstwvfs" and "dstvfs" to follow field names of
localrepository, instead of "dstvfs" and "rvfs" ?


Or what about passing ".hg" to "dstvfs" explicitly like below, because
there are at most four "rvfs" users below ? (this way may be a little
redundant ...)

> -    if os.path.exists(roothg):
> +    if rvfs.lexists():

       if dstvfs('.hg'):

>          raise util.Abort(_('destination already exists'))
>  
>      if not dstvfs.isdir():
>          dstvfs.mkdir()
> -    util.makedir(roothg, notindexed=True)
> +    rvfs.makedir()

       dstvfs.makedir('.hg')

>      requirements = ''
>      try:
> @@ -193,7 +193,7 @@
>      util.writefile(os.path.join(roothg, 'requires'), requirements)
>      util.writefile(os.path.join(roothg, 'sharedpath'), sharedpath)

(in next patch)

       dstvfs.write('.hg/requires', requirements)
       dstvfs.write('.hg/sharedpath, requirements)

> -    r = repository(ui, root)
> +    r = repository(ui, dstvfs.base)
>  
>      default = srcrepo.ui.config('paths', 'default')
>      if default:
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel@selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel
> 


----------------------------------------------------------------------
[FUJIWARA Katsunori]                             foozy@lares.dti.ne.jp
Chinmay Joshi - June 19, 2014, 6:10 p.m.
On Thu, Jun 19, 2014 at 10:56 PM, FUJIWARA Katsunori
<foozy@lares.dti.ne.jp> wrote:
>
> At Mon, 16 Jun 2014 22:09:43 +0530,
> Chinmay Joshi wrote:
>>
>> # HG changeset patch
>> # User Chinmay Joshi <c@chinmayjoshi.com>
>> # Date 1402932176 -19800
>> #      Mon Jun 16 20:52:56 2014 +0530
>> # Node ID c74650d0e88db42859b07e03d4f266eaae91b2a8
>> # Parent  b230c9509c488d0d2ef0bf9e3375b2ad376153fd
>> hg: update to use vfs functions in shared destination repository
>>
>> This patch uses rvfs with base as root of .hg directory in shared destination
>> repository to update filesystem function with vfs. Some methods are changed to
>> use vfs functions with rvfs.
>>
>> diff --git a/mercurial/hg.py b/mercurial/hg.py
>> --- a/mercurial/hg.py
>> +++ b/mercurial/hg.py
>> @@ -173,14 +173,14 @@
>>      sharedpath = srcrepo.sharedpath # if our source is already sharing
>>
>>      dstvfs = scmutil.vfs(dest, expandpath=True, realpath=True)

Additional expandpath is not explicitly required, since path is
already expanded at previous stage in share itself.

>> -    roothg = os.path.join(root, '.hg')
>
> "roothg" shouldn't be removed in this patch, because it is still
> referred from others until next (#4) patch (see writing 'requires' and
> 'sharedpath' out below in this patch !)

I will take care of this in V2.
>
>
>> +    rvfs = scmutil.vfs(os.path.join(dstvfs.base, '.hg'))
>
> Name of "rvfs" seems to make relation with "dstvfs" weak.
>
> What about "dstwvfs" and "dstvfs" to follow field names of
> localrepository, instead of "dstvfs" and "rvfs" ?
>

I used term 'dstvfs because it was already used in copystrore in hg.py
but I must agree that destvfs is better suited.

>
> Or what about passing ".hg" to "dstvfs" explicitly like below, because
> there are at most four "rvfs" users below ? (this way may be a little
> redundant ...)
>

Sounds good as there are only few users with repository path.

>> -    if os.path.exists(roothg):
>> +    if rvfs.lexists():
>
>        if dstvfs('.hg'):
>
>>          raise util.Abort(_('destination already exists'))
>>
>>      if not dstvfs.isdir():
>>          dstvfs.mkdir()
>> -    util.makedir(roothg, notindexed=True)
>> +    rvfs.makedir()
>
>        dstvfs.makedir('.hg')
>
>>      requirements = ''
>>      try:
>> @@ -193,7 +193,7 @@
>>      util.writefile(os.path.join(roothg, 'requires'), requirements)
>>      util.writefile(os.path.join(roothg, 'sharedpath'), sharedpath)
>
> (in next patch)
>
>        dstvfs.write('.hg/requires', requirements)
>        dstvfs.write('.hg/sharedpath, requirements)
>
>> -    r = repository(ui, root)
>> +    r = repository(ui, dstvfs.base)
>>
>>      default = srcrepo.ui.config('paths', 'default')
>>      if default:
>> _______________________________________________
>> Mercurial-devel mailing list
>> Mercurial-devel@selenic.com
>> http://selenic.com/mailman/listinfo/mercurial-devel
>>
>
>
> ----------------------------------------------------------------------
> [FUJIWARA Katsunori]                             foozy@lares.dti.ne.jp

Patch

diff --git a/mercurial/hg.py b/mercurial/hg.py
--- a/mercurial/hg.py
+++ b/mercurial/hg.py
@@ -173,14 +173,14 @@ 
     sharedpath = srcrepo.sharedpath # if our source is already sharing
 
     dstvfs = scmutil.vfs(dest, expandpath=True, realpath=True)
-    roothg = os.path.join(root, '.hg')
+    rvfs = scmutil.vfs(os.path.join(dstvfs.base, '.hg'))
 
-    if os.path.exists(roothg):
+    if rvfs.lexists():
         raise util.Abort(_('destination already exists'))
 
     if not dstvfs.isdir():
         dstvfs.mkdir()
-    util.makedir(roothg, notindexed=True)
+    rvfs.makedir()
 
     requirements = ''
     try:
@@ -193,7 +193,7 @@ 
     util.writefile(os.path.join(roothg, 'requires'), requirements)
     util.writefile(os.path.join(roothg, 'sharedpath'), sharedpath)
 
-    r = repository(ui, root)
+    r = repository(ui, dstvfs.base)
 
     default = srcrepo.ui.config('paths', 'default')
     if default: