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 2010/11/16 17:34:14 UTC
svn commit: r1035683 - in /subversion/trunk/subversion/libsvn_wc:
adm_crawler.c wc_db.c
Author: julianfoad
Date: Tue Nov 16 16:34:14 2010
New Revision: 1035683
URL: http://svn.apache.org/viewvc?rev=1035683&view=rev
Log:
Simplify and check postconditions in some WC DB code.
* subversion/libsvn_wc/wc_db.c
(get_info_for_copy): Simplify, knowing that scan_addition always returns
suitable 'null' values for a simple add.
(scan_addition, svn_wc__db_scan_addition): Check postconditions.
* subversion/libsvn_wc/adm_crawler.c
(svn_wc_crawl_revisions5): Simplify. We no longer elide repos info on
base nodes, so base_get_info will always return it if asked, so this
call to scan_base_repos was redundant.
Modified:
subversion/trunk/subversion/libsvn_wc/adm_crawler.c
subversion/trunk/subversion/libsvn_wc/wc_db.c
Modified: subversion/trunk/subversion/libsvn_wc/adm_crawler.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/adm_crawler.c?rev=1035683&r1=1035682&r2=1035683&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/adm_crawler.c (original)
+++ subversion/trunk/subversion/libsvn_wc/adm_crawler.c Tue Nov 16 16:34:14 2010
@@ -814,22 +814,12 @@ svn_wc_crawl_revisions5(svn_wc_context_t
if (!repos_root || !repos_relpath)
{
- err = svn_wc__db_scan_base_repos(&repos_relpath, &repos_root, NULL,
- db, local_abspath,
- scratch_pool, scratch_pool);
-
- if (err && err->apr_err == SVN_ERR_WC_PATH_NOT_FOUND)
- svn_error_clear(err);
- else
- SVN_ERR(err);
-
/* Ok, that leaves a local addition. Deleted and not existing nodes
are already handled. */
- if (!repos_root || !repos_relpath)
- SVN_ERR(svn_wc__db_scan_addition(NULL, NULL, &repos_relpath,
- &repos_root, NULL, NULL, NULL, NULL,
- NULL, db, local_abspath,
- scratch_pool, scratch_pool));
+ SVN_ERR(svn_wc__db_scan_addition(NULL, NULL, &repos_relpath,
+ &repos_root, NULL, NULL, NULL, NULL,
+ NULL, db, local_abspath,
+ scratch_pool, scratch_pool));
}
if (!SVN_IS_VALID_REVNUM(target_rev))
Modified: subversion/trunk/subversion/libsvn_wc/wc_db.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc_db.c?rev=1035683&r1=1035682&r2=1035683&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/wc_db.c (original)
+++ subversion/trunk/subversion/libsvn_wc/wc_db.c Tue Nov 16 16:34:14 2010
@@ -2899,31 +2899,19 @@ get_info_for_copy(apr_int64_t *copyfrom_
else if (*status == svn_wc__db_status_added)
{
const char *op_root_relpath;
- const char *original_repos_relpath;
- svn_revnum_t original_revision;
- SVN_ERR(scan_addition(status, &op_root_relpath,
+ SVN_ERR(scan_addition(NULL, &op_root_relpath,
NULL, NULL, /* repos_* */
- &original_repos_relpath, copyfrom_id,
- &original_revision,
+ copyfrom_relpath, copyfrom_id, copyfrom_rev,
pdh, local_relpath,
scratch_pool, scratch_pool));
-
- if (*status == svn_wc__db_status_copied
- || *status == svn_wc__db_status_moved_here)
+ if (*copyfrom_relpath)
{
*copyfrom_relpath
- = svn_relpath_join(original_repos_relpath,
+ = svn_relpath_join(*copyfrom_relpath,
svn_dirent_skip_ancestor(op_root_relpath,
local_relpath),
result_pool);
- *copyfrom_rev = original_revision;
- }
- else
- {
- *copyfrom_relpath = NULL;
- *copyfrom_rev = SVN_INVALID_REVNUM;
- *copyfrom_id = INVALID_REPOS_ID;
}
}
else if (*status == svn_wc__db_status_deleted)
@@ -2935,8 +2923,6 @@ get_info_for_copy(apr_int64_t *copyfrom_
if (work_del_relpath)
{
const char *op_root_relpath;
- const char *original_repos_relpath;
- svn_revnum_t original_revision;
const char *parent_del_relpath = svn_dirent_dirname(work_del_relpath,
scratch_pool);
@@ -2944,16 +2930,14 @@ get_info_for_copy(apr_int64_t *copyfrom_
_join above. Can we use get_copyfrom here? */
SVN_ERR(scan_addition(NULL, &op_root_relpath,
NULL, NULL, /* repos_* */
- &original_repos_relpath, copyfrom_id,
- &original_revision,
+ copyfrom_relpath, copyfrom_id, copyfrom_rev,
pdh, parent_del_relpath,
scratch_pool, scratch_pool));
*copyfrom_relpath
- = svn_relpath_join(original_repos_relpath,
+ = svn_relpath_join(*copyfrom_relpath,
svn_dirent_skip_ancestor(op_root_relpath,
local_relpath),
result_pool);
- *copyfrom_rev = original_revision;
}
else
{
@@ -6936,6 +6920,35 @@ scan_addition(svn_wc__db_status_t *statu
result_pool);
}
+ /* Postconditions */
+#ifdef SVN_DEBUG
+ if (status)
+ {
+ SVN_ERR_ASSERT(*status == svn_wc__db_status_added
+ || *status == svn_wc__db_status_copied
+ || *status == svn_wc__db_status_moved_here);
+ if (*status == svn_wc__db_status_added)
+ {
+ SVN_ERR_ASSERT(!original_repos_relpath
+ || *original_repos_relpath == NULL);
+ SVN_ERR_ASSERT(!original_revision
+ || *original_revision == SVN_INVALID_REVNUM);
+ SVN_ERR_ASSERT(!original_repos_id
+ || *original_repos_id == INVALID_REPOS_ID);
+ }
+ else
+ {
+ SVN_ERR_ASSERT(!original_repos_relpath
+ || *original_repos_relpath != NULL);
+ SVN_ERR_ASSERT(!original_revision
+ || *original_revision != SVN_INVALID_REVNUM);
+ SVN_ERR_ASSERT(!original_repos_id
+ || *original_repos_id != INVALID_REPOS_ID);
+ }
+ }
+ SVN_ERR_ASSERT(!op_root_relpath || *op_root_relpath != NULL);
+#endif
+
return SVN_NO_ERROR;
}
@@ -6980,8 +6993,11 @@ svn_wc__db_scan_addition(svn_wc__db_stat
*op_root_abspath = svn_dirent_join(pdh->wcroot->abspath, op_root_relpath,
result_pool);
if (repos_id_p)
- SVN_ERR(fetch_repos_info(repos_root_url, repos_uuid, pdh->wcroot->sdb,
- repos_id, result_pool));
+ {
+ SVN_ERR_ASSERT(repos_id != INVALID_REPOS_ID);
+ SVN_ERR(fetch_repos_info(repos_root_url, repos_uuid, pdh->wcroot->sdb,
+ repos_id, result_pool));
+ }
if (original_repos_id_p)
{
if (original_repos_id == INVALID_REPOS_ID)