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 2010/02/17 17:41:37 UTC
svn commit: r911064 - in /subversion/trunk/subversion/libsvn_wc: adm_ops.c
entries.c entries.h wc-queries.sql wc_db.c wc_db.h
Author: rhuijben
Date: Wed Feb 17 16:41:37 2010
New Revision: 911064
URL: http://svn.apache.org/viewvc?rev=911064&view=rev
Log:
Following up on r911027 and as a very simple example on how you can remove
an entry write operation: remove the entry write operation for setting the
keep-local flag.
* subversion/libsvn_wc/adm_ops.c
(mark_tree_deleted):
Use wc-db operation instead of entries for setting keep-local.
* subversion/libsvn_wc/entries.c
(fold_entry): Remove keep-local handling and leave comment.
* subversion/libsvn_wc/entries.h
(SVN_WC__ENTRY_MODIFY_KEEP_LOCAL): Remove now unused flag.
* subversion/libsvn_wc/wc-queries.sql
(STMT_UPDATE_KEEP_LOCAL_FLAG): New query.
* subversion/libsvn_wc/wc_db.c
(svn_wc__db_temp_set_keep_local): New function.
* subversion/libsvn_wc/wc_db.h
(svn_wc__db_temp_set_keep_local): New function.
Modified:
subversion/trunk/subversion/libsvn_wc/adm_ops.c
subversion/trunk/subversion/libsvn_wc/entries.c
subversion/trunk/subversion/libsvn_wc/entries.h
subversion/trunk/subversion/libsvn_wc/wc-queries.sql
subversion/trunk/subversion/libsvn_wc/wc_db.c
subversion/trunk/subversion/libsvn_wc/wc_db.h
Modified: subversion/trunk/subversion/libsvn_wc/adm_ops.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/adm_ops.c?rev=911064&r1=911063&r2=911064&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/adm_ops.c (original)
+++ subversion/trunk/subversion/libsvn_wc/adm_ops.c Wed Feb 17 16:41:37 2010
@@ -896,15 +896,7 @@
SVN_ERR(svn_wc__db_temp_op_delete(db, dir_abspath, iterpool));
if (keep_local)
- {
- svn_wc_entry_t tmp_entry;
- tmp_entry.keep_local = keep_local;
-
- SVN_ERR(svn_wc__entry_modify2(db, dir_abspath, svn_node_dir, FALSE,
- &tmp_entry,
- SVN_WC__ENTRY_MODIFY_KEEP_LOCAL,
- iterpool));
- }
+ SVN_ERR(svn_wc__db_temp_set_keep_local(db, dir_abspath, TRUE, iterpool));
}
/* Destroy our per-iteration pool. */
Modified: subversion/trunk/subversion/libsvn_wc/entries.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/entries.c?rev=911064&r1=911063&r2=911064&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/entries.c (original)
+++ subversion/trunk/subversion/libsvn_wc/entries.c Wed Feb 17 16:41:37 2010
@@ -2604,8 +2604,7 @@
/* has-props, prop-mods, cachable-props, and present-props are deprecated,
so we do not copy them. */
- if (modify_flags & SVN_WC__ENTRY_MODIFY_KEEP_LOCAL)
- cur_entry->keep_local = entry->keep_local;
+ /* keep_local is no longer modified with this function */
/* Note that we don't bother to fold entry->depth, because it is
only meaningful on the this-dir entry anyway. */
Modified: subversion/trunk/subversion/libsvn_wc/entries.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/entries.h?rev=911064&r1=911063&r2=911064&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/entries.h (original)
+++ subversion/trunk/subversion/libsvn_wc/entries.h Wed Feb 17 16:41:37 2010
@@ -115,7 +115,6 @@
#define SVN_WC__ENTRY_MODIFY_INCOMPLETE APR_INT64_C(0x0000000000100000)
#define SVN_WC__ENTRY_MODIFY_ABSENT APR_INT64_C(0x0000000000200000)
/* OPEN */
-#define SVN_WC__ENTRY_MODIFY_KEEP_LOCAL APR_INT64_C(0x0000000080000000)
#define SVN_WC__ENTRY_MODIFY_WORKING_SIZE APR_INT64_C(0x0000000100000000)
/* OPEN */
#define SVN_WC__ENTRY_MODIFY_FILE_EXTERNAL APR_INT64_C(0x0000000400000000)
Modified: subversion/trunk/subversion/libsvn_wc/wc-queries.sql
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc-queries.sql?rev=911064&r1=911063&r2=911064&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/wc-queries.sql (original)
+++ subversion/trunk/subversion/libsvn_wc/wc-queries.sql Wed Feb 17 16:41:37 2010
@@ -339,6 +339,10 @@
select keep_local from working_node
where wc_id = ?1 and local_relpath = ?2;
+-- STMT_UPDATE_KEEP_LOCAL_FLAG
+update working_node set keep_local= ?3
+where wc_id = ?1 and local_relpath = ?2;
+
-- STMT_SELECT_NOT_PRESENT
select 1 from base_node
where wc_id = ?1 and local_relpath = ?2 and presence = 'not-present';
Modified: subversion/trunk/subversion/libsvn_wc/wc_db.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc_db.c?rev=911064&r1=911063&r2=911064&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/wc_db.c (original)
+++ subversion/trunk/subversion/libsvn_wc/wc_db.c Wed Feb 17 16:41:37 2010
@@ -5356,6 +5356,33 @@
}
svn_error_t *
+svn_wc__db_temp_set_keep_local(svn_wc__db_t *db,
+ const char *local_abspath,
+ svn_boolean_t keep_local,
+ apr_pool_t *scratch_pool)
+{
+ svn_wc__db_pdh_t *pdh;
+ const char *local_relpath;
+ svn_sqlite__stmt_t *stmt;
+
+ SVN_ERR_ASSERT(svn_dirent_is_absolute(local_abspath));
+
+ /* First flush the entries */
+ SVN_ERR(parse_local_abspath(&pdh, &local_relpath, db, local_abspath,
+ svn_sqlite__mode_readwrite,
+ scratch_pool, scratch_pool));
+ flush_entries(pdh);
+
+ /* Then update the database */
+ SVN_ERR(get_statement_for_path(&stmt, db, local_abspath,
+ STMT_UPDATE_KEEP_LOCAL_FLAG, scratch_pool));
+
+ SVN_ERR(svn_sqlite__bind_int64(stmt, 3, keep_local ? 1 : 0));
+
+ return svn_error_return(svn_sqlite__step_done(stmt));
+}
+
+svn_error_t *
svn_wc__db_read_conflict_victims(const apr_array_header_t **victims,
svn_wc__db_t *db,
const char *local_abspath,
Modified: subversion/trunk/subversion/libsvn_wc/wc_db.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc_db.h?rev=911064&r1=911063&r2=911064&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/wc_db.h (original)
+++ subversion/trunk/subversion/libsvn_wc/wc_db.h Wed Feb 17 16:41:37 2010
@@ -1893,6 +1893,14 @@
const char *local_abspath,
apr_pool_t *scratch_pool);
+/* For a deleted directory, set its keep_local flag. (This flag will
+ go away once we have a consolidated administrative area) */
+svn_error_t *
+svn_wc__db_temp_set_keep_local(svn_wc__db_t *db,
+ const char *local_abspath,
+ svn_boolean_t keep_local,
+ apr_pool_t *scratch_pool);
+
/* Removes all references of LOCAL_ABSPATH from its working copy
using DB. When FLUSH_ENTRY_CACHE is set to TRUE, flush the related
entries caches. */