Patchwork [V2] share: replace the bookmarks.shared file with an entry on a new shared.conf file

login
register
mail settings
Submitter Angel Ezquerra
Date Jan. 16, 2015, 12:06 a.m.
Message ID <c27f32292a336faa5d0a.1421366774@Angels-MacBook-Pro.local>
Download mbox | patch
Permalink /patch/7476/
State Superseded
Headers show

Comments

Angel Ezquerra - Jan. 16, 2015, 12:06 a.m.
# HG changeset patch
# User Angel Ezquerra <angel.ezquerra@gmail.com>
# Date 1420989615 -3600
#      Sun Jan 11 16:20:15 2015 +0100
# Node ID c27f32292a336faa5d0a6887360217dd0e67136a
# Parent  dc6d8a8243f3096d6eb2800ef18f300a2d9d54e1
share: replace the bookmarks.shared file with an entry on a new shared.conf file

cd79fb4d75fd introduced a way to share bookmarks. When a repository share that
shares bookmarks was created, a .hg/bookmarks.shared file was created to mark
the repository share as one that shares its bookmarks.

We have plans to introduce other levels of sharing, including a "full share"
mode. Rather than creating a new ".shared" file for each new thing that we may
want to share It seems better to create a single "shared" file that will list
what is shared for a given shared repository. This should make it much easier
to get a list of everything that is shared by a given shared repository.

The shared file contains a list of shared "items" (such as bookmarks). Each
shared "item" is added as a new line in the file. For now the only possible
entry in the file is "bookmarks".
Ryan McElroy - Jan. 16, 2015, 6:40 a.m.
On 1/15/2015 4:06 PM, Angel Ezquerra wrote:
> # HG changeset patch
> # User Angel Ezquerra <angel.ezquerra@gmail.com>
> # Date 1420989615 -3600
> #      Sun Jan 11 16:20:15 2015 +0100
> # Node ID c27f32292a336faa5d0a6887360217dd0e67136a
> # Parent  dc6d8a8243f3096d6eb2800ef18f300a2d9d54e1
> share: replace the bookmarks.shared file with an entry on a new shared.conf file
>
> cd79fb4d75fd introduced a way to share bookmarks. When a repository share that
> shares bookmarks was created, a .hg/bookmarks.shared file was created to mark
> the repository share as one that shares its bookmarks.
>
> We have plans to introduce other levels of sharing, including a "full share"
> mode. Rather than creating a new ".shared" file for each new thing that we may
> want to share It seems better to create a single "shared" file that will list
> what is shared for a given shared repository. This should make it much easier
> to get a list of everything that is shared by a given shared repository.
>
> The shared file contains a list of shared "items" (such as bookmarks). Each
> shared "item" is added as a new line in the file. For now the only possible
> entry in the file is "bookmarks".
>
> diff --git a/hgext/share.py b/hgext/share.py
> --- a/hgext/share.py
> +++ b/hgext/share.py
> @@ -78,13 +78,15 @@
>   
>   def _hassharedbookmarks(repo):
>       """Returns whether this repo has shared bookmarks"""
> +    if not repo.vfs.exists('shared'):
> +        return False
>       try:
> -        repo.vfs.read('bookmarks.shared')
> +        shared = repo.vfs.read('shared').splitlines()
>           return True
You need to delete this 'return True' line for sure; it happens to work 
regardless since shared is only written if bookmarks are shared today, 
but this would be a bad bug in the future :-o
>       except IOError, inst:
>           if inst.errno != errno.ENOENT:
>               raise
> -        return False
> +    return 'bookmarks' in shared
>   
>   def _getsrcrepo(repo):
>       """
> diff --git a/mercurial/hg.py b/mercurial/hg.py
> --- a/mercurial/hg.py
> +++ b/mercurial/hg.py
> @@ -226,7 +226,9 @@
>           _update(r, uprev)
>   
>       if bookmarks:
> -        r.vfs('bookmarks.shared', 'w').close()
> +        fp = r.vfs('shared', 'w')
> +        fp.write('bookmarks\n')
> +        fp.close()
>   
>   def copystore(ui, srcrepo, destpath):
>       '''copy files from store of srcrepo in destpath
I really like this direction for extending shared, and with the fix 
(probably could be done in flight) I'd like to see this get in before 
the cut.

Cheers!

~Ryan
Angel Ezquerra - Jan. 16, 2015, 6:48 a.m.
El 16/01/2015 07:40, "Ryan McElroy" <rm@fb.com> escribió:
>
>
> On 1/15/2015 4:06 PM, Angel Ezquerra wrote:
>>
>> # HG changeset patch
>> # User Angel Ezquerra <angel.ezquerra@gmail.com>
>> # Date 1420989615 -3600
>> #      Sun Jan 11 16:20:15 2015 +0100
>> # Node ID c27f32292a336faa5d0a6887360217dd0e67136a
>> # Parent  dc6d8a8243f3096d6eb2800ef18f300a2d9d54e1
>> share: replace the bookmarks.shared file with an entry on a new
shared.conf file
>>
>> cd79fb4d75fd introduced a way to share bookmarks. When a repository
share that
>> shares bookmarks was created, a .hg/bookmarks.shared file was created to
mark
>> the repository share as one that shares its bookmarks.
>>
>> We have plans to introduce other levels of sharing, including a "full
share"
>> mode. Rather than creating a new ".shared" file for each new thing that
we may
>> want to share It seems better to create a single "shared" file that will
list
>> what is shared for a given shared repository. This should make it much
easier
>> to get a list of everything that is shared by a given shared repository.
>>
>> The shared file contains a list of shared "items" (such as bookmarks).
Each
>> shared "item" is added as a new line in the file. For now the only
possible
>> entry in the file is "bookmarks".
>>
>> diff --git a/hgext/share.py b/hgext/share.py
>> --- a/hgext/share.py
>> +++ b/hgext/share.py
>> @@ -78,13 +78,15 @@
>>     def _hassharedbookmarks(repo):
>>       """Returns whether this repo has shared bookmarks"""
>> +    if not repo.vfs.exists('shared'):
>> +        return False
>>       try:
>> -        repo.vfs.read('bookmarks.shared')
>> +        shared = repo.vfs.read('shared').splitlines()
>>           return True
>
> You need to delete this 'return True' line for sure; it happens to work
regardless since shared is only written if bookmarks are shared today, but
this would be a bad bug in the future :-o

Sorry about that. In addition I did not update the first line of the commit
message :-/

>>       except IOError, inst:
>>           if inst.errno != errno.ENOENT:
>>               raise
>> -        return False
>> +    return 'bookmarks' in shared
>>     def _getsrcrepo(repo):
>>       """
>> diff --git a/mercurial/hg.py b/mercurial/hg.py
>> --- a/mercurial/hg.py
>> +++ b/mercurial/hg.py
>> @@ -226,7 +226,9 @@
>>           _update(r, uprev)
>>         if bookmarks:
>> -        r.vfs('bookmarks.shared', 'w').close()
>> +        fp = r.vfs('shared', 'w')
>> +        fp.write('bookmarks\n')
>> +        fp.close()
>>     def copystore(ui, srcrepo, destpath):
>>       '''copy files from store of srcrepo in destpath
>
> I really like this direction for extending shared, and with the fix
(probably could be done in flight) I'd like to see this get in before the
cut.
>
> Cheers!
>
> ~Ryan

Thanks,

I'll resend the patch soon.

Cheers,

Angel

Patch

diff --git a/hgext/share.py b/hgext/share.py
--- a/hgext/share.py
+++ b/hgext/share.py
@@ -78,13 +78,15 @@ 
 
 def _hassharedbookmarks(repo):
     """Returns whether this repo has shared bookmarks"""
+    if not repo.vfs.exists('shared'):
+        return False
     try:
-        repo.vfs.read('bookmarks.shared')
+        shared = repo.vfs.read('shared').splitlines()
         return True
     except IOError, inst:
         if inst.errno != errno.ENOENT:
             raise
-        return False
+    return 'bookmarks' in shared
 
 def _getsrcrepo(repo):
     """
diff --git a/mercurial/hg.py b/mercurial/hg.py
--- a/mercurial/hg.py
+++ b/mercurial/hg.py
@@ -226,7 +226,9 @@ 
         _update(r, uprev)
 
     if bookmarks:
-        r.vfs('bookmarks.shared', 'w').close()
+        fp = r.vfs('shared', 'w')
+        fp.write('bookmarks\n')
+        fp.close()
 
 def copystore(ui, srcrepo, destpath):
     '''copy files from store of srcrepo in destpath