You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ju...@apache.org on 2015/09/28 18:03:15 UTC
svn commit: r1705712 [3/3] - in /subversion/branches/move-tracking-2: ./
subversion/ subversion/include/ subversion/include/private/
subversion/libsvn_client/ subversion/libsvn_diff/
subversion/libsvn_fs_base/ subversion/libsvn_fs_fs/ subversion/libsvn...
Modified: subversion/branches/move-tracking-2/subversion/tests/libsvn_diff/parse-diff-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/libsvn_diff/parse-diff-test.c?rev=1705712&r1=1705711&r2=1705712&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/libsvn_diff/parse-diff-test.c (original)
+++ subversion/branches/move-tracking-2/subversion/tests/libsvn_diff/parse-diff-test.c Mon Sep 28 16:03:14 2015
@@ -66,6 +66,8 @@ static const char *git_unidiff =
"Index: A/C/gamma" NL
"===================================================================" NL
"diff --git a/A/C/gamma b/A/C/gamma" NL
+ "old mode 100644" NL
+ "new mode 100755" NL
"--- a/A/C/gamma\t(revision 2)" NL
"+++ b/A/C/gamma\t(working copy)" NL
"@@ -1 +1,2 @@" NL
@@ -86,6 +88,8 @@ static const char *git_tree_and_text_uni
"Index: iota.copied" NL
"===================================================================" NL
"diff --git a/iota b/iota.copied" NL
+ "old mode 100644" NL
+ "new mode 100755" NL
"copy from iota" NL
"copy to iota.copied" NL
"--- a/iota\t(revision 2)" NL
@@ -96,6 +100,8 @@ static const char *git_tree_and_text_uni
"Index: A/mu.moved" NL
"===================================================================" NL
"diff --git a/A/mu b/A/mu.moved" NL
+ "old mode 100644" NL
+ "new mode 100755" NL
"rename from A/mu" NL
"rename to A/mu.moved" NL
"--- a/A/mu\t(revision 2)" NL
@@ -114,7 +120,7 @@ static const char *git_tree_and_text_uni
"Index: A/B/lambda" NL
"===================================================================" NL
"diff --git a/A/B/lambda b/A/B/lambda" NL
- "deleted file mode 100644" NL
+ "deleted file mode 100755" NL
"--- a/A/B/lambda\t(revision 2)" NL
"+++ /dev/null\t(working copy)" NL
"@@ -1 +0,0 @@" NL
@@ -303,6 +309,24 @@ create_patch_file(svn_patch_file_t **pat
return SVN_NO_ERROR;
}
+/* svn_stream_readline() with hunk reader semantics */
+static svn_error_t *
+stream_readline_diff(svn_stream_t *stream,
+ svn_stringbuf_t **buf,
+ const char *eol,
+ svn_boolean_t *eof,
+ apr_pool_t *result_pool)
+{
+ SVN_ERR(svn_stream_readline(stream, buf, eol, eof, result_pool));
+
+ /* Hunks are only at EOF after they are completely read, even if
+ they don't have a final EOL in the text */
+ if (*eof && (*buf)->len)
+ *eof = FALSE;
+
+ return SVN_NO_ERROR;
+}
+
/* Check that reading a line from HUNK equals what's inside EXPECTED.
* If ORIGINAL is TRUE, read the original hunk text; else, read the
* modified hunk text. */
@@ -321,7 +345,7 @@ check_content(svn_diff_hunk_t *hunk, svn
while (TRUE)
{
- SVN_ERR(svn_stream_readline(exp, &exp_buf, NL, &exp_eof, pool));
+ SVN_ERR(stream_readline_diff(exp, &exp_buf, NL, &exp_eof, pool));
if (original)
SVN_ERR(svn_diff_hunk_readline_original_text(hunk, &hunk_buf, NULL,
&hunk_eof, pool, pool));
@@ -447,6 +471,8 @@ test_parse_git_diff(apr_pool_t *pool)
SVN_TEST_STRING_ASSERT(patch->new_filename, "A/C/gamma");
SVN_TEST_ASSERT(patch->operation == svn_diff_op_modified);
SVN_TEST_ASSERT(patch->hunks->nelts == 1);
+ SVN_TEST_ASSERT(patch->old_executable_p = svn_tristate_false);
+ SVN_TEST_ASSERT(patch->new_executable_p = svn_tristate_true);
hunk = APR_ARRAY_IDX(patch->hunks, 0, svn_diff_hunk_t *);
@@ -482,6 +508,8 @@ test_parse_git_diff(apr_pool_t *pool)
SVN_TEST_STRING_ASSERT(patch->new_filename, "new");
SVN_TEST_ASSERT(patch->operation == svn_diff_op_added);
SVN_TEST_ASSERT(patch->hunks->nelts == 0);
+ SVN_TEST_ASSERT(patch->old_executable_p = svn_tristate_unknown);
+ SVN_TEST_ASSERT(patch->new_executable_p = svn_tristate_false);
SVN_ERR(svn_diff_close_patch_file(patch_file, pool));
@@ -507,6 +535,8 @@ test_parse_git_tree_and_text_diff(apr_po
SVN_TEST_ASSERT(patch);
SVN_TEST_STRING_ASSERT(patch->old_filename, "iota");
SVN_TEST_STRING_ASSERT(patch->new_filename, "iota.copied");
+ SVN_TEST_ASSERT(patch->old_executable_p = svn_tristate_false);
+ SVN_TEST_ASSERT(patch->new_executable_p = svn_tristate_true);
SVN_TEST_ASSERT(patch->operation == svn_diff_op_copied);
SVN_TEST_ASSERT(patch->hunks->nelts == 1);
@@ -529,6 +559,8 @@ test_parse_git_tree_and_text_diff(apr_po
SVN_TEST_ASSERT(patch);
SVN_TEST_STRING_ASSERT(patch->old_filename, "A/mu");
SVN_TEST_STRING_ASSERT(patch->new_filename, "A/mu.moved");
+ SVN_TEST_ASSERT(patch->old_executable_p = svn_tristate_false);
+ SVN_TEST_ASSERT(patch->new_executable_p = svn_tristate_true);
SVN_TEST_ASSERT(patch->operation == svn_diff_op_moved);
SVN_TEST_ASSERT(patch->hunks->nelts == 1);
@@ -572,6 +604,8 @@ test_parse_git_tree_and_text_diff(apr_po
SVN_TEST_STRING_ASSERT(patch->new_filename, "/dev/null");
SVN_TEST_ASSERT(patch->operation == svn_diff_op_deleted);
SVN_TEST_ASSERT(patch->hunks->nelts == 1);
+ SVN_TEST_ASSERT(patch->old_executable_p = svn_tristate_true);
+ SVN_TEST_ASSERT(patch->new_executable_p = svn_tristate_unknown);
hunk = APR_ARRAY_IDX(patch->hunks, 0, svn_diff_hunk_t *);
Propchange: subversion/branches/move-tracking-2/tools/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Sep 28 16:03:14 2015
@@ -82,4 +82,4 @@
/subversion/branches/verify-at-commit/tools:1462039-1462408
/subversion/branches/verify-keep-going/tools:1439280-1546110
/subversion/branches/wc-collate-path/tools:1402685-1480384
-/subversion/trunk/tools:1606692-1704317
+/subversion/trunk/tools:1606692-1705711
Modified: subversion/branches/move-tracking-2/tools/dist/backport/merger.py
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/tools/dist/backport/merger.py?rev=1705712&r1=1705711&r2=1705712&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/tools/dist/backport/merger.py (original)
+++ subversion/branches/move-tracking-2/tools/dist/backport/merger.py Mon Sep 28 16:03:14 2015
@@ -161,7 +161,7 @@ def merge(entry, expected_stderr=None, *
# Prepare mergeargs and logmsg.
logmsg = ""
if entry.branch:
- branch_url = "%s/%s" % (sf.BRANCHES, entry.branch)
+ branch_url = sf.branch_url(entry.branch)
if svn_version() >= (1, 8):
mergeargs = ['--', branch_url]
logmsg = "Merge {}:\n".format(entry.noun())
@@ -181,7 +181,7 @@ def merge(entry, expected_stderr=None, *
logmsg += "Merge {} from trunk:\n".format(entry.noun())
logmsg += "\n"
mergeargs.extend('-c' + str(revision) for revision in entry.revisions)
- mergeargs.extend(['--', sf.TRUNK])
+ mergeargs.extend(['--', sf.trunk_url()])
logmsg += entry.raw
# TODO(interactive mode): exclude STATUS from reverts
@@ -237,9 +237,9 @@ def validate_branch_contains_named_revis
return # skip check
sf = entry.status_file
- branch_url = "%s/%s" % (sf.BRANCHES, entry.branch)
+ branch_url = sf.branch_url(entry.branch)
present_str = (
- run_svn(['mergeinfo', '--show-revs=merged', '--', sf.TRUNK, branch_url])[1]
+ run_svn(['mergeinfo', '--show-revs=merged', '--', sf.trunk_url(), branch_url])[1]
+
run_svn(['mergeinfo', '--show-revs=eligible', '--', branch_url])[1]
)
Modified: subversion/branches/move-tracking-2/tools/dist/backport/status.py
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/tools/dist/backport/status.py?rev=1705712&r1=1705711&r2=1705712&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/tools/dist/backport/status.py (original)
+++ subversion/branches/move-tracking-2/tools/dist/backport/status.py Mon Sep 28 16:03:14 2015
@@ -157,13 +157,24 @@ class Paragraph:
class StatusFile:
"Encapsulates the STATUS file."
- TRUNK = '^/subversion/trunk'
- BRANCHES = '^/subversion/branches'
-
def __init__(self, status_fp):
"Constructor. STATUS_FP is an open file-like object to parse."
self._parse(status_fp)
self.validate_unique_entry_ids() # Use-case for making this optional?
+ self._project_root_url = '^/subversion'
+
+ def branch_url(self, branch_basename):
+ """Return the URL of a branch with a given basename, of 'Branch:' headers
+ that specify a basename only.
+
+ The returned URL may be an ^/foo short URL."""
+ return (self._project_root_url + "/branches/" + branch_basename)
+
+ def trunk_url(self):
+ """Return the URL to trunk. Trunk is used as the default merge source.
+
+ The returned URL may be an ^/foo short URL."""
+ return self._project_root_url + '/trunk'
def _parse(self, status_fp):
"Parse self.status_fp into self.paragraphs."