Stefan Sperling <[email protected]> writes: > On Wed, Dec 04, 2013 at 07:53:40PM +0100, Stefan Sperling wrote: >> On Wed, Dec 04, 2013 at 06:38:05PM -0000, [email protected] wrote: >> > @@ -1314,6 +1314,12 @@ svn_sqlite__hotcopy(const char *src_path >> > svn_sqlite__db_t *dst_db; >> > sqlite3_backup *backup; >> > int rc1, rc2; >> > + svn_node_kind_t kind; >> > + >> > + /* Create empty file first to avoid SQLITE_DEFAULT_FILE_PERMISSIONS. >> > */ >> > + SVN_ERR(svn_io_check_path(dst_path, &kind, scratch_pool)); >> > + if (kind == svn_node_none) >> > + SVN_ERR(svn_io_file_create_empty(dst_path, scratch_pool)); >> > >> > SVN_ERR(svn_sqlite__open(&dst_db, dst_path, svn_sqlite__mode_rwcreate, >> > NULL, 0, NULL, scratch_pool, scratch_pool)); >> > >> >> Shouldn't this be using svn_io_copy_perms() instead, so that >> permissions used by the hotcopy source are replicated? > > Done in r1547877.
Is there a rationale for copying the permissions from source to destination during hotcopy? Hotcopy is a different operation from normal repository read and write so the user/group/umask used for normal access could be different from the user/group/umask used to make the hotcopy. I'd expect hotcopy to respect umask for permissions. I see that we already copy the permissions for rev and revprop files but that seems silly to me since we don't copy permissions for directories like db/ and db/revs/. If we have a repository with group write access: umask 007 svnadmin create src svn import -mm repo/format file://`pwd`/src/A/f then a hotcopy without group write access umask 022 svnadmin hotcopy src dst gives group write access to files like db/wc.db and db/txn-current but will not allow group commits because db/ is group read-only. -- Philip Martin | Subversion Committer WANdisco // *Non-Stop Data*

