git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 07/16] remote-hg: custom method to write tags

From
Felipe Contreras <felipe.contreras@gmail.com>
Date
Apr 22, 2013, 21:55 UTC
Message-ID
<1366667724-567-8-git-send-email-felipe.contreras@gmail.com>
In-Reply-To
<1366667724-567-1-git-send-email-felipe.contreras@gmail.com>
The one from mercurial is meant for users, on top of the latest tip.
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
---
 contrib/remote-helpers/git-remote-hg | 33 ++++++++++++++++++++++++++++++++-
 1 file changed, 32 insertions(+), 1 deletion(-)
diff --git a/contrib/remote-helpers/git-remote-hg b/contrib/remote-helpers/git-remote-hg
index 4a1c637..f5e4ba7 100755
--- a/contrib/remote-helpers/git-remote-hg
+++ b/contrib/remote-helpers/git-remote-hg
@@ -724,6 +724,37 @@ def parse_tag(parser):
 
     parsed_tags[name] = (tagger, data)
 
+def write_tag(repo, tag, node, msg, author):
+    tip = repo['tip']
+
+    def getfilectx(repo, memctx, f):
+        try:
+            fctx = tip.filectx(f)
+            data = fctx.data()
+        except error.ManifestLookupError:
+            data = ""
+        content = data + "%s %s\n" % (hghex(node), tag)
+        return context.memfilectx(f, content, False, False, None)
+
+    p1 = tip.hex()
+    p2 = '\0' * 20
+    if not author:
+        author = (None, 0, 0)
+    user, date, tz = author
+
+    ctx = context.memctx(repo, (p1, p2), msg,
+            ['.hgtags'], getfilectx,
+            user, (date, tz), {})
+
+    tmp = encoding.encoding
+    encoding.encoding = 'utf-8'
+
+    tagnode = repo.commitctx(ctx)
+
+    encoding.encoding = tmp
+
+    return tagnode
+
 def do_export(parser):
     global parsed_refs, bmarks, peer
 
@@ -762,7 +793,7 @@ def do_export(parser):
             if mode == 'git':
                 if not msg:
                     msg = 'Added tag %s for changeset %s' % (tag, hghex(node[:6]));
-                parser.repo.tag([tag], node, msg, False, author[0], {})
+                write_tag(parser.repo, tag, node, msg, author)
             else:
                 parser.repo.tag([tag], node, None, True, None, {})
             print "ok %s" % ref
-- 
1.8.2.1.790.g4588561
Previous: Felipe ContrerasNext: Felipe Contreras
Message 11 of 24 in “remote-hg: second round of improvements”
  1. 00/16 remote-hg: second round of improvementsFelipe Contreras, Apr 22, 2013
  2. 01/16 remote-helpers: avoid has_keyFelipe Contreras, Apr 22, 2013
  3. Junio C HamanoApr 22, 2013
  4. Felipe ContrerasApr 22, 2013
  5. Dusty PhillipsApr 22, 2013
  6. 02/16 remote-hg: safer bookmark pushingFelipe Contreras, Apr 22, 2013
  7. 03/16 remote-hg: use python urlparseFelipe Contreras, Apr 22, 2013
  8. 04/16 remote-hg: properly mark branches up-to-dateFelipe Contreras, Apr 22, 2013
  9. 05/16 remote-hg: add branch_tip() helperFelipe Contreras, Apr 22, 2013
  10. 06/16 remote-hg: add support for tag objectsFelipe Contreras, Apr 22, 2013
  11. 07/16 remote-hg: custom method to write tagsFelipe Contreras, Apr 22, 2013
  12. 08/16 remote-hg: write tags in the appropriate branchFelipe Contreras, Apr 22, 2013
  13. 09/16 remote-hg: add custom local tag write codeFelipe Contreras, Apr 22, 2013
  14. 10/16 remote-hg: improve email sanitationFelipe Contreras, Apr 22, 2013
  15. 11/16 remote-hg: add support for schemes extensionFelipe Contreras, Apr 22, 2013
  16. 12/16 remote-hg: don't update bookmarks unnecessarilyFelipe Contreras, Apr 22, 2013
  17. 13/16 remote-hg: allow refs with spacesFelipe Contreras, Apr 22, 2013
  18. Junio C HamanoApr 22, 2013
  19. Felipe ContrerasApr 22, 2013
  20. Junio C HamanoApr 22, 2013
  21. 14/16 remote-hg: small performance improvementFelipe Contreras, Apr 22, 2013
  22. 15/16 remote-hg: use marks instead of inlined filesFelipe Contreras, Apr 22, 2013
  23. Junio C HamanoApr 22, 2013
  24. 16/16 remote-hg: strip extra newlineFelipe Contreras, Apr 22, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.