Re: [PATCH] remote-hg: support for notes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Felipe Contreras <felipe.contreras@xxxxxxxxx> writes:

> Signed-off-by: Felipe Contreras <felipe.contreras@xxxxxxxxx>
> ---

I somehow find this way under-explained to be useful for its users.

Is it clear what "support for notes" means in the context of
remote-hg?  Do we send data stored in our notes when we push back to
Hg?  Does Hg have a mechanism to store additional data out of band,
and we add notes when we pull from Hg?  Or does this "support" do
something else, and if so what does it do?

>  contrib/remote-helpers/git-remote-hg | 32 +++++++++++++++++++++++++++++++-
>  1 file changed, 31 insertions(+), 1 deletion(-)
>
> diff --git a/contrib/remote-helpers/git-remote-hg b/contrib/remote-helpers/git-remote-hg
> index 307d82c..e49fcfa 100755
> --- a/contrib/remote-helpers/git-remote-hg
> +++ b/contrib/remote-helpers/git-remote-hg
> @@ -23,6 +23,7 @@ import subprocess
>  import urllib
>  import atexit
>  import urlparse, hashlib
> +import time as ptime
>  
>  #
>  # If you are not in hg-git-compat mode and want to disable the tracking of
> @@ -126,6 +127,7 @@ class Marks:
>          self.rev_marks = {}
>          self.last_mark = 0
>          self.version = 0
> +        self.last_note = 0
>  
>      def load(self):
>          if not os.path.exists(self.path):
> @@ -137,6 +139,7 @@ class Marks:
>          self.marks = tmp['marks']
>          self.last_mark = tmp['last-mark']
>          self.version = tmp.get('version', 1)
> +        self.last_note = tmp.get('last-note', 0)
>  
>          for rev, mark in self.marks.iteritems():
>              self.rev_marks[mark] = rev
> @@ -150,7 +153,7 @@ class Marks:
>          self.version = 2
>  
>      def dict(self):
> -        return { 'tips': self.tips, 'marks': self.marks, 'last-mark' : self.last_mark, 'version' : self.version }
> +        return { 'tips': self.tips, 'marks': self.marks, 'last-mark' : self.last_mark, 'version' : self.version, 'last-note' : self.last_note }
>  
>      def store(self):
>          json.dump(self.dict(), open(self.path, 'w'))
> @@ -525,6 +528,31 @@ def export_ref(repo, name, kind, head):
>      print "from :%u" % rev_to_mark(head)
>      print
>  
> +    pending_revs = set(revs) - notes
> +    if pending_revs:
> +        note_mark = marks.next_mark()
> +        ref = "refs/notes/hg"
> +
> +        print "commit %s" % ref
> +        print "mark :%d" % (note_mark)
> +        print "committer remote-hg <> %s" % (ptime.strftime('%s %z'))
> +        desc = "Notes for %s\n" % (name)
> +        print "data %d" % (len(desc))
> +        print desc
> +        if marks.last_note:
> +            print "from :%u" % marks.last_note
> +
> +        for rev in pending_revs:
> +            notes.add(rev)
> +            c = repo[rev]
> +            print "N inline :%u" % rev_to_mark(c)
> +            msg = c.hex()
> +            print "data %d" % (len(msg))
> +            print msg
> +        print
> +
> +        marks.last_note = note_mark
> +
>      marks.set_tip(ename, head.hex())
>  
>  def export_tag(repo, tag):
> @@ -1126,6 +1154,7 @@ def main(args):
>      global filenodes
>      global fake_bmark, hg_version
>      global dry_run
> +    global notes, alias
>  
>      alias = args[1]
>      url = args[2]
> @@ -1165,6 +1194,7 @@ def main(args):
>      except:
>          hg_version = None
>      dry_run = False
> +    notes = set()
>  
>      repo = get_repo(url, alias)
>      prefix = 'refs/hg/%s' % alias
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]