You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by hw...@apache.org on 2011/08/22 17:21:15 UTC
svn commit: r1160299 [3/3] - in /subversion/branches/fs-py: ./ build/ notes/
subversion/bindings/ctypes-python/test/ subversion/bindings/javahl/native/
subversion/bindings/javahl/src/org/apache/subversion/javahl/
subversion/bindings/javahl/src/org/tigr...
Modified: subversion/branches/fs-py/subversion/svn/status.c
URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/svn/status.c?rev=1160299&r1=1160298&r2=1160299&view=diff
==============================================================================
--- subversion/branches/fs-py/subversion/svn/status.c (original)
+++ subversion/branches/fs-py/subversion/svn/status.c Mon Aug 22 15:21:13 2011
@@ -148,11 +148,22 @@ make_relpath(const char *relative_to_pat
/* An example:
* relative_to_path = /a/b/c
* target_path = /a/x/y/z
- * result = ../../x/y/z */
+ * result = ../../x/y/z
+ *
+ * Another example (Windows specific):
+ * relative_to_path = F:/wc
+ * target_path = C:/wc
+ * result = C:/wc
+ */
/* Skip the common ancestor of both paths, here '/a'. */
la = svn_dirent_get_longest_ancestor(relative_to_path, target_path,
scratch_pool);
+ if (*la == '\0')
+ {
+ /* Nothing in common: E.g. C:/ vs F:/ on Windows */
+ return apr_pstrdup(result_pool, target_path);
+ }
relative_to_path = svn_dirent_skip_ancestor(la, relative_to_path);
target_path = svn_dirent_skip_ancestor(la, target_path);
@@ -261,6 +272,10 @@ print_status(const char *path,
(*prop_conflicts)++;
}
+ /* Note that moved-from and moved-to information is only available in STATUS
+ * for (op-)roots of a move. Those are exactly the nodes we want to show
+ * move info for in 'svn status'. See also comments in svn_wc_status3_t. */
+
if (status->moved_from_abspath)
{
const char *cwd;
@@ -268,31 +283,23 @@ print_status(const char *path,
SVN_ERR(svn_dirent_get_absolute(&cwd, "", pool));
relpath = make_relpath(cwd, status->moved_from_abspath, pool, pool);
relpath = svn_dirent_local_style(relpath, pool);
- moved_from_line = apr_psprintf(pool,
- apr_psprintf(pool,
- "\n > %s",
- _("moved from %s")),
- relpath);
+ moved_from_line = apr_pstrcat(pool, "\n > ",
+ apr_psprintf(pool, _("moved from %s"),
+ relpath),
+ (char *)NULL);
}
- /* Only print an extra moved-to line for the op-root of a move-away.
- * As each and every child node of a deleted tree is printed in status
- * output, each of them would be "duplicated" with a moved-to line. */
- if (status->moved_to_abspath
- && status->moved_to_op_root_abspath
- && 0 == strcmp(status->moved_to_op_root_abspath,
- status->moved_to_abspath))
+ if (status->moved_to_abspath)
{
const char *cwd;
const char *relpath;
SVN_ERR(svn_dirent_get_absolute(&cwd, "", pool));
relpath = make_relpath(cwd, status->moved_to_abspath, pool, pool);
relpath = svn_dirent_local_style(relpath, pool);
- moved_to_line = apr_psprintf(pool,
- apr_psprintf(pool,
- "\n > %s",
- _("moved to %s")),
- relpath);
+ moved_to_line = apr_pstrcat(pool, "\n > ",
+ apr_psprintf(pool, _("moved to %s"),
+ relpath),
+ (char *)NULL);
}
if (detailed)
Modified: subversion/branches/fs-py/subversion/svn/tree-conflicts.c
URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/svn/tree-conflicts.c?rev=1160299&r1=1160298&r2=1160299&view=diff
==============================================================================
--- subversion/branches/fs-py/subversion/svn/tree-conflicts.c (original)
+++ subversion/branches/fs-py/subversion/svn/tree-conflicts.c Mon Aug 22 15:21:13 2011
@@ -62,6 +62,8 @@ static const svn_token_map_t map_conflic
{ N_("add"), svn_wc_conflict_reason_added },
{ N_("replace"), svn_wc_conflict_reason_replaced },
{ N_("unversioned"), svn_wc_conflict_reason_unversioned },
+ { N_("moved away"), svn_wc_conflict_reason_moved_away },
+ { N_("moved here"), svn_wc_conflict_reason_moved_here },
{ NULL, 0 }
};
@@ -75,6 +77,8 @@ static const svn_token_map_t map_conflic
{ "add", svn_wc_conflict_reason_added },
{ "replace", svn_wc_conflict_reason_replaced },
{ "unversioned", svn_wc_conflict_reason_unversioned },
+ { "moved-away", svn_wc_conflict_reason_moved_away },
+ { "moved-here", svn_wc_conflict_reason_moved_here },
{ NULL, 0 }
};
Modified: subversion/branches/fs-py/subversion/svndumpfilter/main.c
URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/svndumpfilter/main.c?rev=1160299&r1=1160298&r2=1160299&view=diff
==============================================================================
--- subversion/branches/fs-py/subversion/svndumpfilter/main.c (original)
+++ subversion/branches/fs-py/subversion/svndumpfilter/main.c Mon Aug 22 15:21:13 2011
@@ -1105,26 +1105,26 @@ do_filter(apr_getopt_t *os,
SVN_ERR(svn_cmdline_fprintf(stderr, subpool,
do_exclude
? opt_state->drop_empty_revs
- ? _("Excluding (and dropping empty "
- "revisions for) prefixes:\n")
- : _("Excluding prefixes:\n")
+ ? _("Excluding (and dropping empty "
+ "revisions for) prefix patterns:\n")
+ : _("Excluding prefix patterns:\n")
: opt_state->drop_empty_revs
- ? _("Including (and dropping empty "
- "revisions for) prefixes:\n")
- : _("Including prefixes:\n")));
+ ? _("Including (and dropping empty "
+ "revisions for) prefix patterns:\n")
+ : _("Including prefix patterns:\n")));
}
else
{
SVN_ERR(svn_cmdline_fprintf(stderr, subpool,
do_exclude
? opt_state->drop_empty_revs
- ? _("Excluding (and dropping empty "
- "revisions for) prefix patterns:\n")
- : _("Excluding prefix patterns:\n")
+ ? _("Excluding (and dropping empty "
+ "revisions for) prefixes:\n")
+ : _("Excluding prefixes:\n")
: opt_state->drop_empty_revs
- ? _("Including (and dropping empty "
- "revisions for) prefix patterns:\n")
- : _("Including prefix patterns:\n")));
+ ? _("Including (and dropping empty "
+ "revisions for) prefixes:\n")
+ : _("Including prefixes:\n")));
}
for (i = 0; i < opt_state->prefixes->nelts; i++)
Modified: subversion/branches/fs-py/subversion/svnversion/main.c
URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/svnversion/main.c?rev=1160299&r1=1160298&r2=1160299&view=diff
==============================================================================
--- subversion/branches/fs-py/subversion/svnversion/main.c (original)
+++ subversion/branches/fs-py/subversion/svnversion/main.c Mon Aug 22 15:21:13 2011
@@ -27,6 +27,8 @@
#include "svn_opt.h"
#include "svn_version.h"
+#include "private/svn_opt_private.h"
+
#include "svn_private_config.h"
#define SVNVERSION_OPT_VERSION SVN_OPT_FIRST_LONGOPT_ID
@@ -122,12 +124,10 @@ main(int argc, const char *argv[])
const char *local_abspath;
apr_allocator_t *allocator;
apr_pool_t *pool;
- int wc_format;
svn_wc_revision_status_t *res;
svn_boolean_t no_newline = FALSE, committed = FALSE;
svn_error_t *err;
apr_getopt_t *os;
- svn_node_kind_t kind;
svn_wc_context_t *wc_ctx;
svn_boolean_t quiet = FALSE;
svn_boolean_t is_version = FALSE;
@@ -224,86 +224,61 @@ main(int argc, const char *argv[])
return EXIT_FAILURE;
}
- SVN_INT_ERR(svn_utf_cstring_to_utf8
- (&wc_path, (os->ind < argc) ? os->argv[os->ind] : ".",
- pool));
- wc_path = svn_dirent_internal_style(wc_path, pool);
+ SVN_INT_ERR(svn_utf_cstring_to_utf8(&wc_path,
+ (os->ind < argc) ? os->argv[os->ind]
+ : ".",
+ pool));
+
+ SVN_INT_ERR(svn_opt__arg_canonicalize_path(&wc_path, wc_path, pool));
SVN_INT_ERR(svn_dirent_get_absolute(&local_abspath, wc_path, pool));
SVN_INT_ERR(svn_wc_context_create(&wc_ctx, NULL, pool, pool));
if (os->ind+1 < argc)
- SVN_INT_ERR(svn_utf_cstring_to_utf8
- (&trail_url, os->argv[os->ind+1], pool));
+ SVN_INT_ERR(svn_utf_cstring_to_utf8(&trail_url, os->argv[os->ind+1],
+ pool));
else
trail_url = NULL;
- SVN_INT_ERR(svn_io_check_path(wc_path, &kind, pool));
- if (kind == svn_node_dir)
- {
- SVN_INT_ERR(svn_wc_check_wc2(&wc_format, wc_ctx, local_abspath, pool));
- if (wc_format == 0)
- {
- SVN_INT_ERR(svn_cmdline_printf(pool, _("Unversioned directory%s"),
- no_newline ? "" : "\n"));
- svn_pool_destroy(pool);
- return EXIT_SUCCESS;
- }
- SVN_INT_ERR(svn_wc_revision_status2(&res, wc_ctx, local_abspath,
- trail_url, committed, NULL, NULL,
- pool, pool));
- }
- else if (kind == svn_node_file)
+ err = svn_wc_revision_status2(&res, wc_ctx, local_abspath, trail_url,
+ committed, NULL, NULL, pool, pool);
+
+ if (err && (err->apr_err == SVN_ERR_WC_PATH_NOT_FOUND
+ || err->apr_err == SVN_ERR_WC_NOT_WORKING_COPY))
{
- SVN_INT_ERR(svn_wc_check_wc2(&wc_format, wc_ctx,
- svn_dirent_dirname(local_abspath, pool),
- pool));
+ svn_node_kind_t kind;
+ svn_boolean_t special;
- /* Unversioned file in unversioned directory */
- if (wc_format == 0)
+ svn_error_clear(err);
+
+ SVN_INT_ERR(svn_io_check_special_path(local_abspath, &kind, &special,
+ pool));
+
+ if (special)
+ SVN_INT_ERR(svn_cmdline_printf(pool, _("Unversioned symlink%s"),
+ no_newline ? "" : "\n"));
+ else if (kind == svn_node_dir)
+ SVN_INT_ERR(svn_cmdline_printf(pool, _("Unversioned directory%s"),
+ no_newline ? "" : "\n"));
+ else if (kind == svn_node_file)
+ SVN_INT_ERR(svn_cmdline_printf(pool, _("Unversioned file%s"),
+ no_newline ? "" : "\n"));
+ else
{
- SVN_INT_ERR(svn_cmdline_printf(pool, _("Unversioned file%s"),
- no_newline ? "" : "\n"));
+ SVN_INT_ERR(svn_cmdline_fprintf(stderr, pool,
+ kind == svn_node_none
+ ? _("'%s' doesn't exist\n")
+ : _("'%s' is of unknown type\n"),
+ svn_dirent_local_style(local_abspath,
+ pool)));
svn_pool_destroy(pool);
- return EXIT_SUCCESS;
- }
-
- err = svn_wc_revision_status2(&res, wc_ctx, local_abspath,
- trail_url, committed, NULL, NULL,
- pool, pool);
-
- if (err)
- {
- /* Unversioned file in versioned directory */
- if (err->apr_err == SVN_ERR_WC_PATH_NOT_FOUND)
- {
- svn_error_clear(err);
- SVN_INT_ERR(svn_cmdline_printf(pool, _("Unversioned file%s"),
- no_newline ? "" : "\n"));
- svn_pool_destroy(pool);
- return EXIT_SUCCESS;
- }
- else
- SVN_INT_ERR(err);
+ return EXIT_FAILURE;
}
-
- }
- else if (kind == svn_node_none)
- {
- svn_error_clear(svn_cmdline_fprintf(stderr, pool,
- _("'%s' doesn't exist\n"),
- svn_dirent_local_style(wc_path, pool)));
svn_pool_destroy(pool);
- return EXIT_FAILURE;
- }
- else
- {
- svn_error_clear(svn_cmdline_fprintf(stderr, pool,
- _("'%s' is of unknown type\n"),
- svn_dirent_local_style(wc_path, pool)));
- svn_pool_destroy(pool);
- return EXIT_FAILURE;
+ return EXIT_SUCCESS;
}
+ SVN_INT_ERR(err);
+
if (! SVN_IS_VALID_REVNUM(res->min_rev))
{
/* Local uncommitted modifications, no revision info was found. */
Modified: subversion/branches/fs-py/subversion/tests/cmdline/changelist_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/tests/cmdline/changelist_tests.py?rev=1160299&r1=1160298&r2=1160299&view=diff
==============================================================================
--- subversion/branches/fs-py/subversion/tests/cmdline/changelist_tests.py (original)
+++ subversion/branches/fs-py/subversion/tests/cmdline/changelist_tests.py Mon Aug 22 15:21:13 2011
@@ -1190,6 +1190,57 @@ def readd_after_revert(sbox):
svntest.actions.run_and_verify_svn(None, None, [],
'add', dummy)
+def empty_pseudo_changelist(sbox):
+ "the empty pseudo-changelist"
+
+ # Boilerplate.
+ sbox.build(read_only = True)
+ wc_dir = sbox.wc_dir
+
+ # Helper functions.
+
+ def found_nodes(*args):
+ # Extract the Greek-tree-relative paths.
+ return set(map(lambda info: info['Path'][len(wc_dir)+1:],
+ svntest.actions.run_and_parse_info(*args)))
+
+ def find_nodes(nodeset, *args):
+ assert isinstance(nodeset, set)
+ foundset = found_nodes(*args)
+ nodeset = set(map(lambda path: path.replace('/', os.path.sep), nodeset))
+ if nodeset != foundset:
+ raise svntest.Failure("Expected nodeset %s but found %s"
+ % (nodeset, foundset))
+
+ # Convenience variables.
+ E_path = sbox.ospath('A/B/E')
+ alpha_path = sbox.ospath('A/B/E/alpha')
+ beta_path = sbox.ospath('A/B/E/beta')
+ iota_path = sbox.ospath('iota')
+
+ # Can't add an item to the empty changelist.
+ expected_err = 'svn: E125014: .*'
+ svntest.actions.run_and_verify_svn(None, [], expected_err,
+ 'changelist', '', iota_path)
+
+ # Modify alpha and beta
+ svntest.main.file_append(alpha_path, "More stuff in alpha\n")
+ svntest.main.file_append(beta_path, "More stuff in beta\n")
+
+ # Add beta to 'testlist'.
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'changelist', 'testlist', beta_path)
+
+ # Convenience variables.
+ changelist = {
+ 'testlist' : set(['A/B/E/beta']),
+ '' : set(['A/B/E', 'A/B/E/alpha']),
+ }
+
+ # Some basic validations.
+ find_nodes(changelist['testlist'] | changelist[''], '-R', E_path)
+ find_nodes(changelist['testlist'], '--cl', 'testlist', '-R', E_path)
+ find_nodes(changelist[''], '--cl', '', '-R', E_path)
########################################################################
# Run the tests
@@ -1213,6 +1264,7 @@ test_list = [ None,
add_remove_non_existent_target,
add_remove_unversioned_target,
readd_after_revert,
+ empty_pseudo_changelist,
]
if __name__ == '__main__':
Modified: subversion/branches/fs-py/subversion/tests/cmdline/copy_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/tests/cmdline/copy_tests.py?rev=1160299&r1=1160298&r2=1160299&view=diff
==============================================================================
--- subversion/branches/fs-py/subversion/tests/cmdline/copy_tests.py (original)
+++ subversion/branches/fs-py/subversion/tests/cmdline/copy_tests.py Mon Aug 22 15:21:13 2011
@@ -955,7 +955,6 @@ def repos_to_wc(sbox):
svntest.actions.run_and_verify_svn(None, None, [], 'revert', '-R', wc_dir)
svntest.main.safe_rmtree(os.path.join(wc_dir, 'E'))
- os.unlink(os.path.join(wc_dir, 'pi'))
expected_output = svntest.actions.get_virginal_state(wc_dir, 1)
svntest.actions.run_and_verify_status(wc_dir, expected_output)
Modified: subversion/branches/fs-py/subversion/tests/cmdline/depth_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/tests/cmdline/depth_tests.py?rev=1160299&r1=1160298&r2=1160299&view=diff
==============================================================================
--- subversion/branches/fs-py/subversion/tests/cmdline/depth_tests.py (original)
+++ subversion/branches/fs-py/subversion/tests/cmdline/depth_tests.py Mon Aug 22 15:21:13 2011
@@ -2229,10 +2229,6 @@ def excluded_path_misc_operation(sbox):
svntest.actions.run_and_verify_svn(None, expected_output, [],
'revert', '--depth=infinity', L_path)
- # Get rid of A/L.
- svntest.actions.run_and_verify_svn(None, None, [],
- 'rm', '--force', L_path)
-
# copy A/B to A/L and then cp A/L to A/M, excluded entry should be
# copied both times
expected_output = ['A '+L_path+'\n']
Modified: subversion/branches/fs-py/subversion/tests/cmdline/diff_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/tests/cmdline/diff_tests.py?rev=1160299&r1=1160298&r2=1160299&view=diff
==============================================================================
--- subversion/branches/fs-py/subversion/tests/cmdline/diff_tests.py (original)
+++ subversion/branches/fs-py/subversion/tests/cmdline/diff_tests.py Mon Aug 22 15:21:13 2011
@@ -3184,6 +3184,16 @@ def diff_summarize_xml(sbox):
wc_rev=2)
expected_status.remove("A/B/lambda")
+ # 3) Test working copy summarize
+ paths = ['A/mu', 'iota', 'A/D/G/tau', 'newfile', 'A/B/lambda',
+ 'newdir',]
+ items = ['modified', 'none', 'modified', 'added', 'deleted', 'added',]
+ kinds = ['file','file','file','file','file', 'dir',]
+ props = ['none', 'modified', 'modified', 'none', 'none', 'none',]
+
+ svntest.actions.run_and_verify_diff_summarize_xml(
+ [], wc_dir, paths, items, props, kinds, wc_dir)
+
svntest.actions.run_and_verify_commit(wc_dir, expected_output,
expected_status, None, wc_dir)
@@ -3197,38 +3207,21 @@ def diff_summarize_xml(sbox):
".*No such revision 5555555",
None, wc_dir, None, None, None, '-r0:5555555', wc_dir)
- # 3) Test working copy summarize
- svntest.actions.run_and_verify_diff_summarize_xml(
- ".*Summarizing diff can only compare repository to repository",
- None, wc_dir, None, None, wc_dir)
-
# 4) Test --summarize --xml on -c2
- paths = ['iota',]
- items = ['none',]
- kinds = ['file',]
- props = ['modified',]
+ paths_iota = ['iota',]
+ items_iota = ['none',]
+ kinds_iota = ['file',]
+ props_iota = ['modified',]
svntest.actions.run_and_verify_diff_summarize_xml(
- [], wc_dir, paths, items, props, kinds, '-c2',
+ [], wc_dir, paths_iota, items_iota, props_iota, kinds_iota, '-c2',
os.path.join(wc_dir, 'iota'))
# 5) Test --summarize --xml on -r1:2
- paths = ['A/mu', 'iota', 'A/D/G/tau', 'newfile', 'A/B/lambda',
- 'newdir',]
- items = ['modified', 'none', 'modified', 'added', 'deleted', 'added',]
- kinds = ['file','file','file','file','file', 'dir',]
- props = ['none', 'modified', 'modified', 'none', 'none', 'none',]
-
svntest.actions.run_and_verify_diff_summarize_xml(
[], wc_dir, paths, items, props, kinds, '-r1:2', wc_dir)
# 6) Same as test #5 but ran against a URL instead of a WC path
- paths = ['A/mu', 'iota', 'A/D/G/tau', 'newfile', 'A/B/lambda',
- 'newdir',]
- items = ['modified', 'none', 'modified', 'added', 'deleted', 'added',]
- kinds = ['file','file','file','file','file', 'dir',]
- props = ['none', 'modified', 'modified', 'none', 'none', 'none',]
-
svntest.actions.run_and_verify_diff_summarize_xml(
[], sbox.repo_url, paths, items, props, kinds, '-r1:2', sbox.repo_url)
Modified: subversion/branches/fs-py/subversion/tests/cmdline/input_validation_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/tests/cmdline/input_validation_tests.py?rev=1160299&r1=1160298&r2=1160299&view=diff
==============================================================================
--- subversion/branches/fs-py/subversion/tests/cmdline/input_validation_tests.py (original)
+++ subversion/branches/fs-py/subversion/tests/cmdline/input_validation_tests.py Mon Aug 22 15:21:13 2011
@@ -120,9 +120,6 @@ def invalid_diff_targets(sbox):
for (target1, target2) in [("iota", "^/"), ("file://", "iota")]:
run_and_verify_svn_in_wc(sbox, "svn: E205000: Cannot mix repository and working "
"copy targets", 'diff', target1, target2)
- run_and_verify_svn_in_wc(sbox, "svn: E200007: Summarizing diff can only compare "
- "repository to repository",
- 'diff', '--summarize', "iota", "A")
def invalid_export_targets(sbox):
"invalid targets for 'export'"
Modified: subversion/branches/fs-py/subversion/tests/cmdline/merge_reintegrate_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/tests/cmdline/merge_reintegrate_tests.py?rev=1160299&r1=1160298&r2=1160299&view=diff
==============================================================================
--- subversion/branches/fs-py/subversion/tests/cmdline/merge_reintegrate_tests.py (original)
+++ subversion/branches/fs-py/subversion/tests/cmdline/merge_reintegrate_tests.py Mon Aug 22 15:21:13 2011
@@ -1383,18 +1383,6 @@ def reintegrate_with_subtree_mergeinfo(s
'D/G/pi' : Item("This is the file 'pi'.\n"),
'D/G/rho' : Item("New content"),
'D/G/tau' : Item("This is the file 'tau'.\n"),
- # Why do we expect mergeinfo of '/A_COPY/D/G/tauprime:2-9' on
- # A/D/G/tauprime? Because this --reintegrate merge is effectively a
- # two URL merge of %URL%/A@9 %URL%/A_COPY@9 to 'A'. Since %URL%/A@9 and
- # %URL%/A_COPY@9 have a common ancestor in %URL%/A@1 we expect this 2-URL
- # merge to record mergeinfo and a component of that mergeinfo describes
- # the merge of %URL%/A_COPY@2 to %URL%/A_COPY@9. We see that above on
- # A. But we also get it on A's subtrees with explicit mergeinfo, namely
- # A/D/G/tauprime. Now I know what you are thinking, "'A_COPY/D/G/tauprime'
- # doesn't even exist until r9!", and you are quite right. But this
- # inheritance of bogus mergeinfo is a known problem, see
- # http://subversion.tigris.org/issues/show_bug.cgi?id=3157#desc8,
- # and is not what this test is about, so we won't fail because of it.
'D/gamma_moved' : Item(
"Even newer content", props={SVN_PROP_MERGEINFO :
'/A/D/gamma_moved:2-15\n'
Modified: subversion/branches/fs-py/subversion/tests/cmdline/merge_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/tests/cmdline/merge_tests.py?rev=1160299&r1=1160298&r2=1160299&view=diff
==============================================================================
--- subversion/branches/fs-py/subversion/tests/cmdline/merge_tests.py (original)
+++ subversion/branches/fs-py/subversion/tests/cmdline/merge_tests.py Mon Aug 22 15:21:13 2011
@@ -7482,7 +7482,6 @@ def merge_away_subtrees_noninheritable_r
#
# First revert all local changes and remove A_COPY/C/nu from disk.
svntest.actions.run_and_verify_svn(None, None, [], 'revert', '-R', wc_dir)
- os.remove(os.path.join(wc_dir, "A_COPY", "nu"))
# Make a text change to A_COPY_2/mu in r11 and then merge that
# change to A/mu in r12. This will create mergeinfo of '/A_COPY_2/mu:11'
@@ -16972,6 +16971,78 @@ def reverse_merge_adds_subtree(sbox):
None, None, None, None,
None, 1, False)
+#----------------------------------------------------------------------
+# A test for issue #3989 'merge which deletes file with native eol-style
+# raises spurious tree conflict'.
+@Issue(3989)
+@SkipUnless(server_has_mergeinfo)
+def merged_deletion_causes_tree_conflict(sbox):
+ "merged deletion causes spurious tree conflict"
+
+ sbox.build()
+ wc_dir = sbox.wc_dir
+
+ A_path = os.path.join(wc_dir, 'A')
+ psi_path = os.path.join(wc_dir, 'A', 'D', 'H', 'psi')
+ H_branch_path = os.path.join(wc_dir, 'branch', 'D', 'H')
+
+ # r2 - Set svn:eol-style native on A/D/H/psi
+ svntest.actions.run_and_verify_svn(None, None, [], 'ps', 'svn:eol-style',
+ 'native', psi_path)
+ svntest.actions.run_and_verify_svn(None, None, [], 'ci', '-m',
+ 'Set eol-style native on a path',
+ wc_dir)
+
+ # r3 - Branch ^/A to ^/branch
+ svntest.actions.run_and_verify_svn(None, None, [], 'copy',
+ sbox.repo_url + '/A',
+ sbox.repo_url + '/branch',
+ '-m', 'Copy ^/A to ^/branch')
+ svntest.actions.run_and_verify_svn(None, None, [], 'up', wc_dir)
+
+ # r4 - Delete A/D/H/psi
+ svntest.actions.run_and_verify_svn(None, None, [], 'delete', psi_path)
+ svntest.actions.run_and_verify_svn(None, None, [], 'ci', '-m',
+ 'Delete a a path with native eol-style',
+ wc_dir)
+
+ # Sync merge ^/A/D/H to branch/D/H.
+ #
+ # branch/D/H/psi is, ignoring differences caused by svn:eol-style, identical
+ # to ^/A/D/H/psi when the latter was deleted, so the deletion should merge
+ # cleanly.
+ svntest.actions.run_and_verify_svn(None, None, [], 'up', wc_dir)
+ expected_output = wc.State(H_branch_path, {
+ 'psi' : Item(status='D '),
+ })
+ expected_mergeinfo_output = wc.State(H_branch_path, {
+ '' : Item(status=' U'),
+ })
+ expected_elision_output = wc.State(H_branch_path, {})
+ expected_status = wc.State(H_branch_path, {
+ '' : Item(status=' M'),
+ 'chi' : Item(status=' '),
+ 'psi' : Item(status='D '),
+ 'omega' : Item(status=' '),
+ })
+ expected_status.tweak(wc_rev=4)
+ expected_disk = wc.State('', {
+ '' : Item(props={SVN_PROP_MERGEINFO : '/A/D/H:3-4'}),
+ 'chi' : Item("This is the file 'chi'.\n"),
+ 'omega' : Item("This is the file 'omega'.\n"),
+ })
+ expected_skip = wc.State('.', { })
+ svntest.actions.run_and_verify_merge(H_branch_path, None, None,
+ sbox.repo_url + '/A/D/H', None,
+ expected_output,
+ expected_mergeinfo_output,
+ expected_elision_output,
+ expected_disk,
+ expected_status,
+ expected_skip,
+ None, None, None, None,
+ None, 1, False)
+
########################################################################
# Run the tests
@@ -17098,6 +17169,7 @@ test_list = [ None,
foreign_repos_prop_conflict,
merge_adds_subtree_with_mergeinfo,
reverse_merge_adds_subtree,
+ merged_deletion_causes_tree_conflict,
]
if __name__ == '__main__':
Modified: subversion/branches/fs-py/subversion/tests/cmdline/patch_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/tests/cmdline/patch_tests.py?rev=1160299&r1=1160298&r2=1160299&view=diff
==============================================================================
--- subversion/branches/fs-py/subversion/tests/cmdline/patch_tests.py (original)
+++ subversion/branches/fs-py/subversion/tests/cmdline/patch_tests.py Mon Aug 22 15:21:13 2011
@@ -3615,6 +3615,61 @@ def patch_moved_away(sbox):
1, # check-props
1) # dry-run
+@XFail()
+@Issue(3991)
+def patch_lacking_trailing_eol(sbox):
+ "patch file lacking trailing eol"
+
+ sbox.build(read_only = True)
+ wc_dir = sbox.wc_dir
+
+ patch_file_path = make_patch_path(sbox)
+ iota_path = os.path.join(wc_dir, 'iota')
+ mu_path = os.path.join(wc_dir, 'A', 'mu')
+
+ # Prepare
+ expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
+
+ # Apply patch
+ unidiff_patch = [
+ "Index: iota\n",
+ "===================================================================\n",
+ "--- iota\t(revision 1)\n",
+ "+++ iota\t(working copy)\n",
+ # TODO: -1 +1
+ "@@ -1 +1,2 @@\n",
+ " This is the file 'iota'.\n",
+ "+Some more bytes", # No trailing \n on this line!
+ ]
+
+ svntest.main.file_write(patch_file_path, ''.join(unidiff_patch))
+
+ gamma_contents = "It is the file 'gamma'.\n"
+ iota_contents = "This is the file 'iota'.\n"
+ new_contents = "new\n"
+
+ expected_output = [
+ 'U %s\n' % os.path.join(wc_dir, 'iota'),
+ 'svn: W[0-9]+: .*', # warning about appending a newline to iota's last line
+ ]
+
+ # Expect a newline to be appended
+ expected_disk = svntest.main.greek_state.copy()
+ expected_disk.tweak('iota', contents=iota_contents+"Some more bytes\n")
+
+ expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
+ expected_status.tweak('iota', status='M ')
+
+ expected_skip = wc.State('', { })
+
+ svntest.actions.run_and_verify_patch(wc_dir, os.path.abspath(patch_file_path),
+ expected_output,
+ expected_disk,
+ expected_status,
+ expected_skip,
+ None, # expected err
+ 1, # check-props
+ 1) # dry-run
########################################################################
#Run the tests
@@ -3652,6 +3707,7 @@ test_list = [ None,
patch_set_prop_no_eol,
patch_add_symlink,
patch_moved_away,
+ patch_lacking_trailing_eol,
]
if __name__ == '__main__':
Modified: subversion/branches/fs-py/subversion/tests/cmdline/revert_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/tests/cmdline/revert_tests.py?rev=1160299&r1=1160298&r2=1160299&view=diff
==============================================================================
--- subversion/branches/fs-py/subversion/tests/cmdline/revert_tests.py (original)
+++ subversion/branches/fs-py/subversion/tests/cmdline/revert_tests.py Mon Aug 22 15:21:13 2011
@@ -368,37 +368,52 @@ def revert_replaced_file_without_props(s
svntest.actions.run_and_verify_status(wc_dir, expected_status)
#----------------------------------------------------------------------
-# Regression test for issue #876:
-# svn revert of an svn move'd file does not revert the file
-@XFail()
+# Note that issue #876 has been rejected. This now basically tests that
+# reverting the delete side of a move does *not* also revert the copy side.
@Issue(876)
def revert_moved_file(sbox):
- "revert a moved file"
+ "revert a moved file"
+
+ # svntest.factory.make(sbox, """svn mv iota iota_moved
+ # svn st
+ # svn revert iota
+ # svn st
+ # """)
+
+ sbox.build()
+ wc_dir = sbox.wc_dir
+
+ iota = os.path.join(wc_dir, 'iota')
+ iota_moved = os.path.join(wc_dir, 'iota_moved')
+
+ # svn mv iota iota_moved
+ expected_stdout = svntest.verify.UnorderedOutput([
+ 'A ' + iota_moved + '\n',
+ 'D ' + iota + '\n',
+ ])
+
+ actions.run_and_verify_svn2('OUTPUT', expected_stdout, [], 0, 'mv', iota,
+ iota_moved)
- sbox.build(read_only = True)
- wc_dir = sbox.wc_dir
- iota_path = os.path.join(wc_dir, 'iota')
- iota_path_moved = os.path.join(wc_dir, 'iota_moved')
-
- svntest.actions.run_and_verify_svn(None, None, [], 'mv', iota_path,
- iota_path_moved)
- expected_output = svntest.actions.get_virginal_state(wc_dir, 1)
- expected_output.tweak('iota', status='D ')
- expected_output.add({
- 'iota_moved' : Item(status='A ', copied='+', wc_rev='-'),
- })
- svntest.actions.run_and_verify_status(wc_dir, expected_output)
-
- # now revert the file iota
- svntest.actions.run_and_verify_svn(None,
- ["Reverted '" + iota_path + "'\n"], [], 'revert', iota_path)
-
- # at this point, svn status on iota_path_moved should return nothing
- # since it should disappear on reverting the move, and since svn status
- # on a non-existent file returns nothing.
+ # svn st
+ expected_status = actions.get_virginal_state(wc_dir, 1)
+ expected_status.add({
+ 'iota_moved' : Item(status='A ', copied='+', wc_rev='-'),
+ })
+ expected_status.tweak('iota', status='D ')
+
+ actions.run_and_verify_unquiet_status(wc_dir, expected_status)
+
+ # svn revert iota
+ expected_stdout = ["Reverted '" + iota + "'\n"]
+
+ actions.run_and_verify_svn2('OUTPUT', expected_stdout, [], 0, 'revert',
+ iota)
- svntest.actions.run_and_verify_svn(None, [], [],
- 'status', '-v', iota_path_moved)
+ # svn st
+ expected_status.tweak('iota', status=' ')
+
+ actions.run_and_verify_unquiet_status(wc_dir, expected_status)
#----------------------------------------------------------------------
@@ -890,13 +905,7 @@ def status_of_missing_dir_after_revert_r
svntest.actions.run_and_verify_svn(None, expected_output, [], "revert", "-R",
G_path)
-
- # Revert leaves these added nodes as unversioned
- expected_output = svntest.verify.UnorderedOutput(
- ["? " + os.path.join(G_path, "pi") + "\n",
- "? " + os.path.join(G_path, "rho") + "\n",
- "? " + os.path.join(G_path, "tau") + "\n"])
- svntest.actions.run_and_verify_svn(None, expected_output, [],
+ svntest.actions.run_and_verify_svn(None, [], [],
"status", wc_dir)
svntest.main.safe_rmtree(G_path)
@@ -977,8 +986,7 @@ def revert_tree_conflicts_in_updated_fil
expected_status.remove('A/D/G/tau')
expected_disk = svntest.main.greek_state.copy()
- expected_disk.tweak('A/D/G/rho',
- contents="This is the file 'rho'.\nLocal edit.\n")
+ expected_disk.remove('A/D/G/rho')
expected_disk.tweak('A/D/G/pi',
contents="This is the file 'pi'.\nIncoming edit.\n")
expected_disk.remove('A/D/G/tau')
@@ -1464,8 +1472,6 @@ def revert_tree_conflicts_with_replaceme
# Remove a few unversioned files that revert left behind.
os.remove(wc('A/B/E/loc_beta'))
- os.remove(wc('A/D/G/rho'))
- os.remove(wc('A/D/G/tau'))
os.remove(wc('A/D/H/loc_psi'))
# The update operation should have put all incoming items in place.
Modified: subversion/branches/fs-py/subversion/tests/cmdline/special_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/tests/cmdline/special_tests.py?rev=1160299&r1=1160298&r2=1160299&view=diff
==============================================================================
--- subversion/branches/fs-py/subversion/tests/cmdline/special_tests.py (original)
+++ subversion/branches/fs-py/subversion/tests/cmdline/special_tests.py Mon Aug 22 15:21:13 2011
@@ -800,6 +800,67 @@ def merge_foreign_symlink(sbox):
# 'A/zeta' : Item(status='A ', wc_rev='-', props={'svn:special': '*'}),
# })
+#----------------------------------------------------------------------
+# See also symlink_to_wc_svnversion().
+@Issue(2557,3987)
+@SkipUnless(svntest.main.is_posix_os)
+def symlink_to_wc_basic(sbox):
+ "operate on symlink to wc"
+
+ sbox.build(read_only = True)
+ wc_dir = sbox.wc_dir
+
+ # Create a symlink
+ symlink_path = sbox.add_wc_path('2')
+ assert not os.path.islink(symlink_path)
+ os.symlink(os.path.basename(wc_dir), symlink_path) ### implementation detail
+ symlink_basename = os.path.basename(symlink_path)
+
+ # Some basic tests
+ wc_uuid = svntest.actions.get_wc_uuid(wc_dir)
+ expected_info = [{
+ 'Path' : re.escape(os.path.join(symlink_path)),
+ 'Working Copy Root Path' : re.escape(os.path.abspath(symlink_path)),
+ 'Repository Root' : sbox.repo_url,
+ 'Repository UUID' : wc_uuid,
+ 'Revision' : '1',
+ 'Node Kind' : 'directory',
+ 'Schedule' : 'normal',
+ }, {
+ 'Name' : 'iota',
+ 'Path' : re.escape(os.path.join(symlink_path, 'iota')),
+ 'Working Copy Root Path' : re.escape(os.path.abspath(symlink_path)),
+ 'Repository Root' : sbox.repo_url,
+ 'Repository UUID' : wc_uuid,
+ 'Revision' : '1',
+ 'Node Kind' : 'file',
+ 'Schedule' : 'normal',
+ }]
+ svntest.actions.run_and_verify_info(expected_info,
+ symlink_path, symlink_path + '/iota')
+
+#----------------------------------------------------------------------
+# Similar to #2557/#3987; see symlink_to_wc_basic().
+@Issue(2557,3987)
+@SkipUnless(svntest.main.is_posix_os)
+def symlink_to_wc_svnversion(sbox):
+ "svnversion on symlink to wc"
+
+ sbox.build(read_only = True)
+ wc_dir = sbox.wc_dir
+
+ # Create a symlink
+ symlink_path = sbox.add_wc_path('2')
+ assert not os.path.islink(symlink_path)
+ os.symlink(os.path.basename(wc_dir), symlink_path) ### implementation detail
+ symlink_basename = os.path.basename(symlink_path)
+
+ # Some basic tests
+ svntest.actions.run_and_verify_svnversion("Unmodified symlink to wc",
+ symlink_path, sbox.repo_url,
+ [ "1\n" ], [])
+
+
########################################################################
# Run the tests
@@ -824,6 +885,8 @@ test_list = [ None,
unrelated_changed_special_status,
symlink_destination_change,
merge_foreign_symlink,
+ symlink_to_wc_basic,
+ symlink_to_wc_svnversion,
]
if __name__ == '__main__':
Modified: subversion/branches/fs-py/subversion/tests/cmdline/svndumpfilter_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/tests/cmdline/svndumpfilter_tests.py?rev=1160299&r1=1160298&r2=1160299&view=diff
==============================================================================
--- subversion/branches/fs-py/subversion/tests/cmdline/svndumpfilter_tests.py (original)
+++ subversion/branches/fs-py/subversion/tests/cmdline/svndumpfilter_tests.py Mon Aug 22 15:21:13 2011
@@ -439,7 +439,7 @@ def filter_mergeinfo_revs_outside_of_dum
# Check that all the blather above really happens. First does
# svndumpfilter report what we expect to stderr?
expected_err = [
- "Excluding (and dropping empty revisions for) prefix patterns:\n",
+ "Excluding (and dropping empty revisions for) prefixes:\n",
" '/branches/B2'\n",
"\n",
"Revision 6 committed as 6.\n",
Modified: subversion/branches/fs-py/subversion/tests/cmdline/svntest/main.py
URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/tests/cmdline/svntest/main.py?rev=1160299&r1=1160298&r2=1160299&view=diff
==============================================================================
--- subversion/branches/fs-py/subversion/tests/cmdline/svntest/main.py (original)
+++ subversion/branches/fs-py/subversion/tests/cmdline/svntest/main.py Mon Aug 22 15:21:13 2011
@@ -705,11 +705,16 @@ def chmod_tree(path, mode, mask):
# For clearing away working copies
def safe_rmtree(dirname, retry=0):
- "Remove the tree at DIRNAME, making it writable first"
+ """Remove the tree at DIRNAME, making it writable first.
+ If DIRNAME is a symlink, only remove the symlink, not its target."""
def rmtree(dirname):
chmod_tree(dirname, 0666, 0666)
shutil.rmtree(dirname)
+ if os.path.islink(dirname):
+ os.unlink(dirname)
+ return
+
if not os.path.exists(dirname):
return
Modified: subversion/branches/fs-py/subversion/tests/cmdline/svnversion_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/tests/cmdline/svnversion_tests.py?rev=1160299&r1=1160298&r2=1160299&view=diff
==============================================================================
--- subversion/branches/fs-py/subversion/tests/cmdline/svnversion_tests.py (original)
+++ subversion/branches/fs-py/subversion/tests/cmdline/svnversion_tests.py Mon Aug 22 15:21:13 2011
@@ -147,7 +147,8 @@ def svnversion_test(sbox):
X_path = os.path.join(wc_dir, 'Q', 'X')
svntest.actions.run_and_verify_svnversion("Nonexistent file or directory",
X_path, repo_url,
- None, [ "'%s' doesn't exist\n" % X_path ])
+ None, [ "'%s' doesn't exist\n"
+ % os.path.abspath(X_path) ])
# Perform a sparse checkout of under the existing WC, and confirm that
# svnversion detects it as a "partial" WC.
@@ -287,9 +288,8 @@ def svnversion_with_structural_changes(s
svntest.actions.run_and_verify_svnversion("Deleted file",
sbox.ospath('iota'),
repo_url + '/iota',
+ ["1M\n"],
[],
- [ "'%s' doesn't exist\n" % \
- sbox.ospath('iota')],
)
svntest.actions.run_and_verify_svnversion("Deleted file", wc_dir, repo_url,
[ "1:2M\n" ], [])
Modified: subversion/branches/fs-py/subversion/tests/libsvn_diff/parse-diff-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/subversion/tests/libsvn_diff/parse-diff-test.c?rev=1160299&r1=1160298&r2=1160299&view=diff
==============================================================================
--- subversion/branches/fs-py/subversion/tests/libsvn_diff/parse-diff-test.c (original)
+++ subversion/branches/fs-py/subversion/tests/libsvn_diff/parse-diff-test.c Mon Aug 22 15:21:13 2011
@@ -246,6 +246,15 @@ static const char *bad_git_diff_header =
"diff --git a/ b/path 1 b/ b/path 1" NL
"new file mode 100644" NL;
+static const char *unidiff_lacking_trailing_eol =
+ "Index: A/C/gamma" NL
+ "===================================================================" NL
+ "--- A/C/gamma\t(revision 2)" NL
+ "+++ A/C/gamma\t(working copy)" NL
+ "@@ -1 +1,2 @@" NL
+ " This is the file 'gamma'." NL
+ "+some more bytes to 'gamma'"; /* Don't add NL after this line */
+
/* Create a PATCH_FILE containing the contents of DIFF. */
static svn_error_t *
@@ -900,6 +909,57 @@ test_git_diffs_with_spaces_diff(apr_pool
SVN_ERR(svn_diff_close_patch_file(patch_file, pool));
return SVN_NO_ERROR;
}
+
+static svn_error_t *
+test_parse_unidiff_lacking_trailing_eol(apr_pool_t *pool)
+{
+ svn_patch_file_t *patch_file;
+ svn_boolean_t reverse;
+ svn_boolean_t ignore_whitespace;
+ int i;
+ apr_pool_t *iterpool;
+
+ reverse = FALSE;
+ ignore_whitespace = FALSE;
+ iterpool = svn_pool_create(pool);
+ for (i = 0; i < 2; i++)
+ {
+ svn_patch_t *patch;
+ svn_diff_hunk_t *hunk;
+
+ svn_pool_clear(iterpool);
+
+ SVN_ERR(create_patch_file(&patch_file, unidiff_lacking_trailing_eol,
+ pool));
+
+ /* We have one patch with one hunk. Parse it. */
+ SVN_ERR(svn_diff_parse_next_patch(&patch, patch_file, reverse,
+ ignore_whitespace, iterpool,
+ iterpool));
+ SVN_TEST_ASSERT(patch);
+ SVN_TEST_STRING_ASSERT(patch->old_filename, "A/C/gamma");
+ SVN_TEST_STRING_ASSERT(patch->new_filename, "A/C/gamma");
+ SVN_TEST_ASSERT(patch->hunks->nelts == 1);
+
+ hunk = APR_ARRAY_IDX(patch->hunks, 0, svn_diff_hunk_t *);
+ SVN_ERR(check_content(hunk, ! reverse,
+ "This is the file 'gamma'." NL,
+ pool));
+
+ /* Verify that the contents are as expected, with a NL appended.
+ TODO: test for notification about the NL silently appended */
+ SVN_ERR(check_content(hunk, reverse,
+ "This is the file 'gamma'." NL
+ "some more bytes to 'gamma'" NL,
+ pool));
+
+ reverse = !reverse;
+ SVN_ERR(svn_diff_close_patch_file(patch_file, pool));
+ }
+ svn_pool_destroy(iterpool);
+ return SVN_NO_ERROR;
+}
+
/* ========================================================================== */
struct svn_test_descriptor_t test_funcs[] =
@@ -921,5 +981,7 @@ struct svn_test_descriptor_t test_funcs[
"test property diffs with odd symbols"),
SVN_TEST_PASS2(test_git_diffs_with_spaces_diff,
"test git diffs with spaces in paths"),
+ SVN_TEST_XFAIL2(test_parse_unidiff_lacking_trailing_eol,
+ "test parsing unidiffs lacking trailing eol"),
SVN_TEST_NULL
};
Modified: subversion/branches/fs-py/tools/dist/collect_sigs.py
URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/tools/dist/collect_sigs.py?rev=1160299&r1=1160298&r2=1160299&view=diff
==============================================================================
--- subversion/branches/fs-py/tools/dist/collect_sigs.py (original)
+++ subversion/branches/fs-py/tools/dist/collect_sigs.py Mon Aug 22 15:21:13 2011
@@ -75,7 +75,9 @@ def generate_asc_files(target_dir='.'):
db = sqlite3.connect(os.path.join(target_dir, 'sigs.db'))
curs = db.cursor()
- curs.execute('SELECT filename, signature FROM signatures;')
+ like_filename = 'subversion-%s%%' % config.version
+ curs.execute('''SELECT filename, signature FROM signatures
+ WHERE filename LIKE ?''', (like_filename, ) )
for filename, signature in curs:
fd = _open(filename)
fd.write(signature)
Modified: subversion/branches/fs-py/tools/dist/dist.sh
URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/tools/dist/dist.sh?rev=1160299&r1=1160298&r2=1160299&view=diff
==============================================================================
--- subversion/branches/fs-py/tools/dist/dist.sh (original)
+++ subversion/branches/fs-py/tools/dist/dist.sh Mon Aug 22 15:21:13 2011
@@ -268,19 +268,19 @@ vsn_file="$DISTPATH/subversion/include/s
if [ "$VERSION" != "trunk" ]; then
sed \
- -e "/#define *SVN_VER_MAJOR/s/[0-9]\+/$ver_major/" \
- -e "/#define *SVN_VER_MINOR/s/[0-9]\+/$ver_minor/" \
- -e "/#define *SVN_VER_PATCH/s/[0-9]\+/$ver_patch/" \
+ -e "/#define *SVN_VER_MAJOR/s/[0-9]\\+/$ver_major/" \
+ -e "/#define *SVN_VER_MINOR/s/[0-9]\\+/$ver_minor/" \
+ -e "/#define *SVN_VER_PATCH/s/[0-9]\\+/$ver_patch/" \
-e "/#define *SVN_VER_TAG/s/\".*\"/\" ($VER_TAG)\"/" \
-e "/#define *SVN_VER_NUMTAG/s/\".*\"/\"$VER_NUMTAG\"/" \
- -e "/#define *SVN_VER_REVISION/s/[0-9]\+/$REVISION/" \
+ -e "/#define *SVN_VER_REVISION/s/[0-9]\\+/$REVISION/" \
< "$vsn_file" > "$vsn_file.tmp"
else
# Don't munge the version number if we are creating a nightly trunk tarball
sed \
-e "/#define *SVN_VER_TAG/s/\".*\"/\" ($VER_TAG)\"/" \
-e "/#define *SVN_VER_NUMTAG/s/\".*\"/\"$VER_NUMTAG\"/" \
- -e "/#define *SVN_VER_REVISION/s/[0-9]\+/$REVISION/" \
+ -e "/#define *SVN_VER_REVISION/s/[0-9]\\+/$REVISION/" \
< "$vsn_file" > "$vsn_file.tmp"
fi
Modified: subversion/branches/fs-py/tools/dist/release.py
URL: http://svn.apache.org/viewvc/subversion/branches/fs-py/tools/dist/release.py?rev=1160299&r1=1160298&r2=1160299&view=diff
==============================================================================
--- subversion/branches/fs-py/tools/dist/release.py (original)
+++ subversion/branches/fs-py/tools/dist/release.py Mon Aug 22 15:21:13 2011
@@ -423,7 +423,7 @@ def roll_tarballs(args):
logging.info('Moving artifacts and calculating checksums')
for e in extns:
if args.version.pre == 'nightly':
- filename = 'subversion-trunk.%s' % e
+ filename = 'subversion-nightly.%s' % e
else:
filename = 'subversion-%s.%s' % (args.version, e)