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