All of lore.kernel.org
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Felipe Contreras <felipe.contreras@gmail.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH] remote-hg: support for notes
Date: Thu, 29 Aug 2013 15:12:34 -0700	[thread overview]
Message-ID: <xmqqzjs016zx.fsf@gitster.dls.corp.google.com> (raw)
In-Reply-To: <1377813000-24465-1-git-send-email-felipe.contreras@gmail.com> (Felipe Contreras's message of "Thu, 29 Aug 2013 16:50:00 -0500")

Felipe Contreras <felipe.contreras@gmail.com> writes:

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

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

  reply	other threads:[~2013-08-29 22:12 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-08-28 19:23 [PATCH 0/8] remote-{hg,bzr}: updates Felipe Contreras
2013-08-28 19:23 ` [PATCH 1/8] remote-bzr: fix export of utf-8 authors Felipe Contreras
2013-08-28 20:05   ` Matthieu Moy
2013-08-28 20:48     ` Felipe Contreras
2013-08-28 20:54       ` Antoine Pelisse
2013-08-28 21:21         ` Felipe Contreras
2013-08-28 21:38           ` Felipe Contreras
2013-08-28 21:05       ` Matthieu Moy
2013-08-28 21:21         ` Felipe Contreras
2013-08-28 21:58         ` Junio C Hamano
2013-08-28 22:25           ` Felipe Contreras
2013-08-29 21:24           ` Re* " Junio C Hamano
2013-08-29 21:25             ` Junio C Hamano
2013-09-01  4:09               ` Michael Haggerty
2013-08-29 21:28             ` Antoine Pelisse
2013-08-29 21:42               ` Junio C Hamano
2013-08-29 21:44                 ` Junio C Hamano
2013-09-01  4:03             ` Michael Haggerty
2013-08-28 20:35   ` Eric Sunshine
2013-08-28 21:14     ` [PATCH v2] " Felipe Contreras
2013-08-28 19:23 ` [PATCH 2/8] remote-bzr: make bzr branches configurable per-repo Felipe Contreras
2013-08-28 19:23 ` [PATCH 3/8] remote-hg: fix test Felipe Contreras
2013-08-28 19:23 ` [PATCH 4/8] remote-hg: add missing &&s in the test Felipe Contreras
2013-08-28 19:23 ` [PATCH 5/8] remote-hg: improve basic test Felipe Contreras
2013-08-28 19:23 ` [PATCH 6/8] remote-helpers: trivial style fixes Felipe Contreras
2013-08-28 19:23 ` [PATCH 7/8] remote-helpers: cleanup more global variables Felipe Contreras
2013-08-28 19:23 ` [PATCH 8/8] remote-hg: support for notes Felipe Contreras
2013-08-29 18:45   ` Junio C Hamano
2013-08-29 21:50     ` [PATCH] " Felipe Contreras
2013-08-29 22:12       ` Junio C Hamano [this message]
2013-08-29 22:29         ` [PATCH v3] " Felipe Contreras
2013-08-29 22:49           ` Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=xmqqzjs016zx.fsf@gitster.dls.corp.google.com \
    --to=gitster@pobox.com \
    --cc=felipe.contreras@gmail.com \
    --cc=git@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.