You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by rh...@apache.org on 2012/06/03 21:27:58 UTC
svn commit: r1345748 - in /subversion/trunk/subversion/libsvn_wc:
adm_crawler.c adm_ops.c deprecated.c diff_local.c lock.c util.c wc_db.c
wc_db.h
Author: rhuijben
Date: Sun Jun 3 19:27:58 2012
New Revision: 1345748
URL: http://svn.apache.org/viewvc?rev=1345748&view=rev
Log:
Make svn_wc__db_read_kind() handle processing 'hidden', just like
svn_wc_read_kind(). This allows making the lock processing to disallow
locking hidden directories, which in turn fixes the
update_with_parents_and_exclude() test.
* subversion/libsvn_wc/adm_crawler.c
(svn_wc__internal_transmit_prop_deltas): Update caller.
* subversion/libsvn_wc/adm_ops.c
(svn_wc__process_committed_internal): Update caller.
* subversion/libsvn_wc/deprecated.c
(svn_wc_add3): Update caller.
* subversion/libsvn_wc/diff_local.c
(svn_wc_diff6): Update caller.
* subversion/libsvn_wc/lock.c
(svn_wc_adm_retrieve,
svn_wc_adm_probe_retrieve): Update caller.
(svn_wc__acquire_write_lock): Update caller. This fixes the update test.
* subversion/libsvn_wc/util.c
(svn_wc__fetch_kind_func): Update caller.
* subversion/libsvn_wc/wc_db.c
(svn_wc__db_read_kind): Add argument and retrieve and process status if hidden
nodes shouldn't show up as files or directories.
* subversion/libsvn_wc/wc_db.h
(svn_wc__db_read_kind): Update prototype and argument documentation.
Modified:
subversion/trunk/subversion/libsvn_wc/adm_crawler.c
subversion/trunk/subversion/libsvn_wc/adm_ops.c
subversion/trunk/subversion/libsvn_wc/deprecated.c
subversion/trunk/subversion/libsvn_wc/diff_local.c
subversion/trunk/subversion/libsvn_wc/lock.c
subversion/trunk/subversion/libsvn_wc/util.c
subversion/trunk/subversion/libsvn_wc/wc_db.c
subversion/trunk/subversion/libsvn_wc/wc_db.h
Modified: subversion/trunk/subversion/libsvn_wc/adm_crawler.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/adm_crawler.c?rev=1345748&r1=1345747&r2=1345748&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/adm_crawler.c (original)
+++ subversion/trunk/subversion/libsvn_wc/adm_crawler.c Sun Jun 3 19:27:58 2012
@@ -1206,7 +1206,10 @@ svn_wc__internal_transmit_prop_deltas(sv
apr_array_header_t *propmods;
svn_kind_t kind;
- SVN_ERR(svn_wc__db_read_kind(&kind, db, local_abspath, FALSE, iterpool));
+ SVN_ERR(svn_wc__db_read_kind(&kind, db, local_abspath,
+ FALSE /* allow_missing */,
+ FALSE /* show_hidden */,
+ iterpool));
/* Get an array of local changes by comparing the hashes. */
SVN_ERR(svn_wc__internal_propdiff(&propmods, NULL, db, local_abspath,
Modified: subversion/trunk/subversion/libsvn_wc/adm_ops.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/adm_ops.c?rev=1345748&r1=1345747&r2=1345748&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/adm_ops.c (original)
+++ subversion/trunk/subversion/libsvn_wc/adm_ops.c Sun Jun 3 19:27:58 2012
@@ -264,7 +264,10 @@ svn_wc__process_committed_internal(svn_w
/* Only check kind after processing the node itself. The node might
have been deleted */
- SVN_ERR(svn_wc__db_read_kind(&kind, db, local_abspath, TRUE, scratch_pool));
+ SVN_ERR(svn_wc__db_read_kind(&kind, db, local_abspath,
+ TRUE /* allow_missing */,
+ TRUE /* show_hidden */,
+ scratch_pool));
if (recurse && kind == svn_kind_dir)
{
@@ -2124,7 +2127,9 @@ revert_partial(svn_wc__db_t *db,
{
svn_kind_t kind;
- SVN_ERR(svn_wc__db_read_kind(&kind, db, local_abspath, TRUE,
+ SVN_ERR(svn_wc__db_read_kind(&kind, db, local_abspath,
+ FALSE /* allow_missing */,
+ FALSE /* show_hidden */,
iterpool));
if (kind != svn_kind_file)
continue;
Modified: subversion/trunk/subversion/libsvn_wc/deprecated.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/deprecated.c?rev=1345748&r1=1345747&r2=1345748&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/deprecated.c (original)
+++ subversion/trunk/subversion/libsvn_wc/deprecated.c Sun Jun 3 19:27:58 2012
@@ -932,7 +932,9 @@ svn_wc_add3(const char *path,
{
svn_kind_t kind;
- SVN_ERR(svn_wc__db_read_kind(&kind, wc_db, local_abspath, FALSE, pool));
+ SVN_ERR(svn_wc__db_read_kind(&kind, wc_db, local_abspath,
+ FALSE /* allow_missing */,
+ FALSE /* show_hidden */, pool));
if (kind == svn_kind_dir)
{
svn_wc_adm_access_t *adm_access;
Modified: subversion/trunk/subversion/libsvn_wc/diff_local.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/diff_local.c?rev=1345748&r1=1345747&r2=1345748&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/diff_local.c (original)
+++ subversion/trunk/subversion/libsvn_wc/diff_local.c Sun Jun 3 19:27:58 2012
@@ -564,7 +564,9 @@ svn_wc_diff6(svn_wc_context_t *wc_ctx,
svn_boolean_t get_all;
SVN_ERR_ASSERT(svn_dirent_is_absolute(local_abspath));
- SVN_ERR(svn_wc__db_read_kind(&kind, wc_ctx->db, local_abspath, FALSE,
+ SVN_ERR(svn_wc__db_read_kind(&kind, wc_ctx->db, local_abspath,
+ FALSE /* allow_missing */,
+ FALSE /* show_hidden */,
scratch_pool));
if (kind == svn_kind_dir)
Modified: subversion/trunk/subversion/libsvn_wc/lock.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/lock.c?rev=1345748&r1=1345747&r2=1345748&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/lock.c (original)
+++ subversion/trunk/subversion/libsvn_wc/lock.c Sun Jun 3 19:27:58 2012
@@ -920,7 +920,9 @@ svn_wc_adm_retrieve(svn_wc_adm_access_t
if (associated)
{
err = svn_wc__db_read_kind(&kind, svn_wc__adm_get_db(associated),
- local_abspath, TRUE, pool);
+ local_abspath,
+ TRUE /* allow_missing */,
+ FALSE /* show_hidden */, pool);
if (err)
{
@@ -980,7 +982,9 @@ svn_wc_adm_probe_retrieve(svn_wc_adm_acc
SVN_ERR_ASSERT(associated != NULL);
SVN_ERR(svn_dirent_get_absolute(&local_abspath, path, pool));
- SVN_ERR(svn_wc__db_read_kind(&kind, associated->db, local_abspath, TRUE, pool));
+ SVN_ERR(svn_wc__db_read_kind(&kind, associated->db, local_abspath,
+ TRUE /* allow_missing */, FALSE /* show_hidden*/,
+ pool));
if (kind == svn_kind_dir)
dir = path;
@@ -1515,7 +1519,8 @@ svn_wc__acquire_write_lock(const char **
svn_error_t *err;
SVN_ERR(svn_wc__db_read_kind(&kind, wc_ctx->db, local_abspath,
- (lock_root_abspath != NULL),
+ (lock_root_abspath != NULL) /* allow_missing*/,
+ FALSE /* show_hidden */,
scratch_pool));
if (!lock_root_abspath && kind != svn_kind_dir)
@@ -1532,7 +1537,9 @@ svn_wc__acquire_write_lock(const char **
SVN_ERR_ASSERT(lock_root_abspath != NULL);
parent_abspath = svn_dirent_dirname(local_abspath, scratch_pool);
- err = svn_wc__db_read_kind(&parent_kind, db, parent_abspath, TRUE,
+ err = svn_wc__db_read_kind(&parent_kind, db, parent_abspath,
+ TRUE /* allow_missing */,
+ FALSE /* show_missing */,
scratch_pool);
if (err && SVN_WC__ERR_IS_NOT_CURRENT_WC(err))
{
@@ -1565,7 +1572,9 @@ svn_wc__acquire_write_lock(const char **
/* Can't lock parents that don't exist */
if (kind == svn_kind_unknown)
{
- SVN_ERR(svn_wc__db_read_kind(&kind, db, local_abspath, FALSE,
+ SVN_ERR(svn_wc__db_read_kind(&kind, db, local_abspath,
+ FALSE /* allow_missing */,
+ FALSE /* show_hidden */,
scratch_pool));
if (kind != svn_kind_dir)
Modified: subversion/trunk/subversion/libsvn_wc/util.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/util.c?rev=1345748&r1=1345747&r2=1345748&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/util.c (original)
+++ subversion/trunk/subversion/libsvn_wc/util.c Sun Jun 3 19:27:58 2012
@@ -546,7 +546,9 @@ svn_wc__fetch_kind_func(svn_kind_t *kind
const char *local_abspath = svn_dirent_join(sfb->base_abspath, path,
scratch_pool);
- SVN_ERR(svn_wc__db_read_kind(kind, sfb->db, local_abspath, FALSE,
+ SVN_ERR(svn_wc__db_read_kind(kind, sfb->db, local_abspath,
+ FALSE /* allow_missing */,
+ FALSE /* show_hidden */,
scratch_pool));
return SVN_NO_ERROR;
Modified: subversion/trunk/subversion/libsvn_wc/wc_db.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc_db.c?rev=1345748&r1=1345747&r2=1345748&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/wc_db.c (original)
+++ subversion/trunk/subversion/libsvn_wc/wc_db.c Sun Jun 3 19:27:58 2012
@@ -11639,6 +11639,7 @@ svn_wc__db_read_kind(svn_kind_t *kind,
svn_wc__db_t *db,
const char *local_abspath,
svn_boolean_t allow_missing,
+ svn_boolean_t show_hidden,
apr_pool_t *scratch_pool)
{
svn_wc__db_wcroot_t *wcroot;
@@ -11676,6 +11677,24 @@ svn_wc__db_read_kind(svn_kind_t *kind,
}
}
+ if (!show_hidden)
+ {
+ int op_depth = svn_sqlite__column_int(stmt_info, 0);
+ svn_wc__db_status_t status = svn_sqlite__column_token(stmt_info, 3,
+ presence_map);
+
+ if (op_depth > 0)
+ SVN_ERR(convert_to_working_status(&status, status));
+
+ if (status == svn_wc__db_status_not_present
+ || status == svn_wc__db_status_excluded)
+ {
+ *kind = svn_kind_none;
+ SVN_ERR(svn_sqlite__reset(stmt_info));
+ return SVN_NO_ERROR;
+ }
+ }
+
*kind = svn_sqlite__column_token(stmt_info, 4, kind_map);
return svn_error_trace(svn_sqlite__reset(stmt_info));
Modified: subversion/trunk/subversion/libsvn_wc/wc_db.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc_db.h?rev=1345748&r1=1345747&r2=1345748&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/wc_db.h (original)
+++ subversion/trunk/subversion/libsvn_wc/wc_db.h Sun Jun 3 19:27:58 2012
@@ -2177,12 +2177,16 @@ svn_wc__db_read_conflicts(const apr_arra
If the node is missing and ALLOW_MISSING is FALSE, then it will return
SVN_ERR_WC_PATH_NOT_FOUND.
+ If SHOW_HIDDEN is FALSE and the status of LOCAL_ABSPATH is NOT_PRESENT or
+ EXCLUDED, set KIND to svn_kind_none.
+
Uses SCRATCH_POOL for temporary allocations. */
svn_error_t *
svn_wc__db_read_kind(svn_kind_t *kind,
svn_wc__db_t *db,
const char *local_abspath,
svn_boolean_t allow_missing,
+ svn_boolean_t show_hidden,
apr_pool_t *scratch_pool);