You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by cm...@apache.org on 2012/07/17 16:26:16 UTC
svn commit: r1362508 - /subversion/trunk/subversion/svnlook/main.c
Author: cmpilato
Date: Tue Jul 17 14:26:16 2012
New Revision: 1362508
URL: http://svn.apache.org/viewvc?rev=1362508&view=rev
Log:
Stop whining about invalid base revisions when users request
difference-type information on r0 (which is a valid revision, but by
definition carries no "changes").
* subversion/svnlook/main.c
(get_base_rev): New helper function.
(do_dirs_changed, do_changed, do_diff): Now use get_base_rev() to
fetch the base revision. If there's no base revision, exit without
further action.
Modified:
subversion/trunk/subversion/svnlook/main.c
Modified: subversion/trunk/subversion/svnlook/main.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/svnlook/main.c?rev=1362508&r1=1362507&r2=1362508&view=diff
==============================================================================
--- subversion/trunk/subversion/svnlook/main.c (original)
+++ subversion/trunk/subversion/svnlook/main.c Tue Jul 17 14:26:16 2012
@@ -1282,6 +1282,30 @@ print_tree(svn_fs_root_t *root,
}
+/* Set *BASE_REV to the revision on which the target root specified in
+ C is based, or to SVN_INVALID_REVNUM when C represents "revision
+ 0" (because that revision isn't based on another revision). */
+static svn_error_t *
+get_base_rev(svn_revnum_t *base_rev, svnlook_ctxt_t *c, apr_pool_t *pool)
+{
+ if (c->is_revision)
+ {
+ *base_rev = c->rev_id - 1;
+ }
+ else
+ {
+ *base_rev = svn_fs_txn_base_revision(c->txn);
+
+ if (! SVN_IS_VALID_REVNUM(*base_rev))
+ return svn_error_createf
+ (SVN_ERR_FS_NO_SUCH_REVISION, NULL,
+ _("Transaction '%s' is not based on a revision; how odd"),
+ c->txn_name);
+ }
+ return SVN_NO_ERROR;
+}
+
+
/*** Subcommand handlers. ***/
@@ -1388,16 +1412,9 @@ do_dirs_changed(svnlook_ctxt_t *c, apr_p
svn_repos_node_t *tree;
SVN_ERR(get_root(&root, c, pool));
- if (c->is_revision)
- base_rev_id = c->rev_id - 1;
- else
- base_rev_id = svn_fs_txn_base_revision(c->txn);
-
- if (! SVN_IS_VALID_REVNUM(base_rev_id))
- return svn_error_createf
- (SVN_ERR_FS_NO_SUCH_REVISION, NULL,
- _("Transaction '%s' is not based on a revision; how odd"),
- c->txn_name);
+ SVN_ERR(get_base_rev(&base_rev_id, c, pool));
+ if (base_rev_id == SVN_INVALID_REVNUM)
+ return SVN_NO_ERROR;
SVN_ERR(generate_delta_tree(&tree, c->repos, root, base_rev_id, pool));
if (tree)
@@ -1493,16 +1510,9 @@ do_changed(svnlook_ctxt_t *c, apr_pool_t
svn_repos_node_t *tree;
SVN_ERR(get_root(&root, c, pool));
- if (c->is_revision)
- base_rev_id = c->rev_id - 1;
- else
- base_rev_id = svn_fs_txn_base_revision(c->txn);
-
- if (! SVN_IS_VALID_REVNUM(base_rev_id))
- return svn_error_createf
- (SVN_ERR_FS_NO_SUCH_REVISION, NULL,
- _("Transaction '%s' is not based on a revision; how odd"),
- c->txn_name);
+ SVN_ERR(get_base_rev(&base_rev_id, c, pool));
+ if (base_rev_id == SVN_INVALID_REVNUM)
+ return SVN_NO_ERROR;
SVN_ERR(generate_delta_tree(&tree, c->repos, root, base_rev_id, pool));
if (tree)
@@ -1521,16 +1531,9 @@ do_diff(svnlook_ctxt_t *c, apr_pool_t *p
svn_repos_node_t *tree;
SVN_ERR(get_root(&root, c, pool));
- if (c->is_revision)
- base_rev_id = c->rev_id - 1;
- else
- base_rev_id = svn_fs_txn_base_revision(c->txn);
-
- if (! SVN_IS_VALID_REVNUM(base_rev_id))
- return svn_error_createf
- (SVN_ERR_FS_NO_SUCH_REVISION, NULL,
- _("Transaction '%s' is not based on a revision; how odd"),
- c->txn_name);
+ SVN_ERR(get_base_rev(&base_rev_id, c, pool));
+ if (base_rev_id == SVN_INVALID_REVNUM)
+ return SVN_NO_ERROR;
SVN_ERR(generate_delta_tree(&tree, c->repos, root, base_rev_id, pool));
if (tree)