You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by da...@apache.org on 2016/04/23 22:51:42 UTC

svn commit: r1740670 - /subversion/trunk/tools/dist/backport/merger.py

Author: danielsh
Date: Sat Apr 23 20:51:42 2016
New Revision: 1740670

URL: http://svn.apache.org/viewvc?rev=1740670&view=rev
Log:
backport.py: Don't assume UTF-8 may be passed in argv.

Not actually required — on my machine, «
    subprocess.Popen([x.encode('UTF-8') for x in argv])
» works just fine — but this is consistent with the cmdline client.

* tools/dist/backport/merger.py:
  (contextlib, tempfile): Import.
  (log_message_file): New helper function.
  (merge): Pass the log message in a file.

Modified:
    subversion/trunk/tools/dist/backport/merger.py

Modified: subversion/trunk/tools/dist/backport/merger.py
URL: http://svn.apache.org/viewvc/subversion/trunk/tools/dist/backport/merger.py?rev=1740670&r1=1740669&r2=1740670&view=diff
==============================================================================
--- subversion/trunk/tools/dist/backport/merger.py (original)
+++ subversion/trunk/tools/dist/backport/merger.py Sat Apr 23 20:51:42 2016
@@ -23,12 +23,14 @@ backport.merger - library for running ST
 
 import backport.status
 
+import contextlib
 import functools
 import logging
 import os
 import re
 import subprocess
 import sys
+import tempfile
 import time
 import unittest
 
@@ -141,6 +143,14 @@ def _includes_only_svn_mergeinfo_changes
   return False
 
 
+@contextlib.contextmanager
+def log_message_file(logmsg):
+  "Context manager that returns a file containing the text LOGMSG."
+  with tempfile.NamedTemporaryFile(mode='w+', encoding="UTF-8") as logmsg_file:
+    logmsg_file.write(logmsg)
+    logmsg_file.flush()
+    yield logmsg_file.name
+  
 def merge(entry, expected_stderr=None, *, commit=False):
   """Merges ENTRY into the working copy at cwd.
 
@@ -209,7 +219,9 @@ def merge(entry, expected_stderr=None, *
       s = s[:-1]
     open('./STATUS', 'w').write(s)
 
-    run_svn_quiet(['commit', '-m', logmsg])
+    # Don't assume we can pass UTF-8 in argv.
+    with log_message_file(logmsg) as logmsg_filename:
+      run_svn_quiet(['commit', '-F', logmsg_filename])
 
   # TODO(interactive mode): add the 'svn status' display