On Sat, Jan 30, 2010 at 4:14 AM, Neels J Hofmeyr <ne...@elego.de> wrote: > Neels J Hofmeyr wrote: >> Starting from 'svn help', I see these commands where @BASE is applicable: >> >> blame (praise, annotate, ann) >> cat >> copy (cp) >> diff (di) >> export >> info >> list (ls) >> log >> merge >> mergeinfo >> move (mv, rename, ren) >> propdel (pdel, pd) >> propedit (pedit, pe) >> propget (pget, pg) >> proplist (plist, pl) >> propset (pset, ps) >> switch (sw) >> update (up) > > > DISCLAIMER: I have not tested with mixed-revision working copies. > > And the results are... Some are consistent, and some are just *wild* AFAICT. > > > > These commands interpret @BASE to mean... > --------------------------+---------------------------- > the pristine of the | "what I checked out": > copied-here node: | > --------------------------+---------------------------- > cat | update (but see below) > copy | (prop*) > diff | (merge) > export | > | > > > These make no difference if BASE is supplied > or not and always use 'what I checked out' > -------------------------------------------- > prop* > merge > > > These don't accept BASE, though 'svn help' lists it. > ---------------------------------------------------- > switch > prop* --revprop > move > > > These are inconsistent in their use of BASE, > either acting different between -rBASE and > @BASE and/or being plain wrong. (more below) > -------------------------------------------- > info > list > log > blame > > But what shows in these "inconsistent" ones is a slight tendency to mean > 'copy-from' when saying -rBASE and 'what I checked out' when saying @BASE, > within the use of the same command, where @BASE is stronger than -rBASE. > Though, in many cases this only holds true because -rBASE simply has no > effect at all, and not providing any revision or keyword selects 'copy-from' > by default. Read all the details below. > > > > > Details: > > > * move > 'svn help' talks about a --revision option and a BASE keyword, but dude, > that just makes no sense. > > > * switch > 'svn help' talks about a --revision option and a BASE keyword, but it > refuses to accept "BASE". > > > * update > update just uses the revision number "I checked out" and it is a no-op in an > up-to-date state. Otherwise it is a special case of a 'time-warp' update, > i.e. when specifying a folder, all its children are pulled back or forward > so that they match the folder's current "checked out" revision number. > > > * blame > 'svn blame file' > tries to show a 'blame' for the locally modified state. > So I guess count it as based on the copied-here state.
This behavior is new in 1.7. Before 1.7 we didn't look at the locally modified version. > 'svn blame -rBASE file' > shows the copied-from URL's blame, but at the "checked out" revision, which > may be newer than the copied-from revision. This is not at all related to > either of the copied-here or "checked out" nodes' histories. > > 'svn blame f...@base' and > 'svn blame -rBASE f...@base' > both show the blame of the file "I checked out". > > > > * prop* > For normal props, using "BASE" makes no difference. > The BASE keyword is not available for the prop* --revprop commands. > [[[ > svn: Must specify the revision as a number, a date or 'HEAD' when operating > on a revision property > ]]] > > > > * list > 'svn list folder' and > 'svn list -rBASE folder' > both show the listing of the copied-from URL and Revision (omitting any > local additions and deletions). > > 'svn list fol...@base' and > 'svn list -rBASE fol...@base' > both show the listing of the URL "I checked out", > but at the copied-from revision (makes no sense). > > > > * log > 'svn log -v file' and > 'svn log -v -rBASE file' > both show the log of the copied-here node, but they start at the "checked > out" revision (going backwards), showing some history that is not related to > the node, because it happened on the copy-from node *after* the copy-from > revision. This used to give some kind of error in 1.6, but the behavior was changed in the last few weeks. > 'svn log -v f...@base' > 'svn log -v -rBASE f...@base' > both show the log of the node "I checked out". > > In log, passing -rBASE causes the log to only show the node's log for the > "checked out" revision number. So 'log -rBASE f...@base' is empty when the > "checked out" node had no changes in the "checked out" revision number. > > > > * info > 'svn info file' > shows the complete information: > The usual info is "what I checked out", and the copied-here node is > correctly indicated in Copied From URL and Rev. > Interestingly, Last Changed Rev reflects copied-here, not "what I checked > out". This could be argued about (not related to @BASE keyword). > [[[ > + svn info file > Path: file > Name: file > URL: file:///home/neels/hg/svn/tests/cat_replaced/repos/file > Repository Root: file:///home/neels/hg/svn/tests/cat_replaced/repos > Repository UUID: c57cfc0c-0d49-11df-b658-41678fc56d06 > Revision: 4 > Node Kind: file > Schedule: replace > Copied From URL: file:///home/neels/hg/svn/tests/cat_replaced/repos/other_file > Copied From Rev: 2 > Last Changed Author: neels > Last Changed Rev: 2 > Last Changed Date: 2010-01-30 03:47:17 +0100 (Sat, 30 Jan 2010) > Text Last Updated: 2010-01-30 03:47:23 +0100 (Sat, 30 Jan 2010) > Checksum: 74caf578c8e8a5a1a206e5ee3a0deacc > ]]] This could be an artifact of using entries. For added nodes the revision doesn't make sense, but the revision is available in svn_wc_entry_t anyway. (You won't see a valid revision if you use svn_wc__db_read_info()) I think we can do better here with WC-NG, where we store more details. In WC-NG we have the common properties (author, last modified, last changed) available in BASE and WORKING and not just one set which we try to use for both with limited success.. > 'svn info f...@base' and > 'svn info -rBASE f...@base' > both show only "what I checked out". > [[[ > + svn info f...@base > Path: file > Name: file > URL: file:///home/neels/hg/svn/tests/cat_replaced/repos/file > Repository Root: file:///home/neels/hg/svn/tests/cat_replaced/repos > Repository UUID: c57cfc0c-0d49-11df-b658-41678fc56d06 > Revision: 4 > Node Kind: file > Last Changed Author: neels > Last Changed Rev: 3 > Last Changed Date: 2010-01-30 03:47:19 +0100 (Sat, 30 Jan 2010) > ]]] > (I was consistently at revision 4 before doing the replace, and I copied > from revision 2. So this case clearly interprets BASE as 4, meaning "what I > checked out". The URL is also "what I checked out".) > > However, > 'svn info -rBASE file' > shows a bad mixture: > [[[ > + svn info -rBASE file > Path: other_file > Name: other_file > URL: file:///home/neels/hg/svn/tests/cat_replaced/repos/other_file > Repository Root: file:///home/neels/hg/svn/tests/cat_replaced/repos > Repository UUID: c57cfc0c-0d49-11df-b658-41678fc56d06 > Revision: 4 > Node Kind: file > Last Changed Author: neels > Last Changed Rev: 4 > Last Changed Date: 2010-01-30 03:47:21 +0100 (Sat, 30 Jan 2010) > ]]] > - Path and Name show the copied-from basename (!?), > - URL shows the copied-from path, but > - Revision, Date and Last Changed show the revision number "I checked out", > referring to the copied-from history (in the future after the copy-from > rev). > > > Test attached. Note that some lines are good to uncomment/comment to see > through some cases (e.g. for log and info; should be marked). Most things > are plain, though. > > > ...phew, what donkey work. XP Thanks for doing this :) > > Now To The Drawing Boards, you guys! > *ALL OUR "BASE" ARE BELONG TO US!!* I would like to compare the result to a 1.6.X version, but I don't have the time to do that today :( (I hope your script can help here) Bert > > ~Neels > > #!/bin/bash > > ## TO MAKE THIS RUN YOUR CUSTOM COMPILED SVN, two simple options: > ## 1. Adjust your PATH to point at your custom installed location: > ## export PATH="$HOME/prefix/svn_trunk/bin:$PATH" > ## OR > ## 2. Uncomment the four lines below to use aliases into your > ## built source tree. The next line is the only line you should > ## need to adjust. > # SVNDIR=/path/to/built_subversion_source_tree > # function svn() { ${SVNDIR}/subversion/svn/svn "$@"; } > # function svnserve() { ${SVNDIR}/subversion/svnserve/svnserve "$@"; } > # function svnadmin() { ${SVNDIR}/subversion/svnadmin/svnadmin "$@"; } > > set -e > > svn --version > REPOS="`pwd`/repos" > URL="file://$REPOS" > rm -rf repos wc > svnadmin create repos > cat > repos/hooks/pre-revprop-change <<EOF > #!/bin/sh > exit 0; > EOF > chmod a+x repos/hooks/pre-revprop-change > > svn co -q ${URL} wc > > set -x > cd wc > > ## ACTUAL TEST > > # make a file that is locally replaced... > echo "r1 for file, i.e. the deleted file's history." > file > cp file old_state_of_file > svn add file old_state_of_file > > mkdir folder > echo "r1" > folder/this_is_revision_1_of_folder > svn add folder > > echo file_with_props > file_with_props > svn add file_with_props > svn ps prop_r1_on_deleted_file value_r1 file_with_props > svn ps this_is_rev deleted_r1 file_with_props > > svn ci -mr1 > svn up > > > > echo "r2" > folder/no,_this_is_revision_2_of_folder > svn add folder/no,_this_is_revision_2_of_folder > > svn ps prop_r2_on_deleted_file deleted_r2 file_with_props > svn ps this_is_rev deleted_r2 file_with_props > > echo "r2 for other_file, i.e. the *copied-here* file's history!" > other_file > svn add other_file > > mkdir other_folder > echo other_folder/file.r2. > other_folder/file.r2 > svn add other_folder > > echo other_file_with_props > other_file_with_props > svn add other_file_with_props > svn ps prop_r2_on_copied_here_file copied_r2 other_file_with_props > svn ps this_is_rev copied_r2 other_file_with_props > > svn ci -mr2 > svn up > > #svn rm folder > > echo "r3" > folder/no,_this_is_revision_3_of_folder > svn add folder/no,_this_is_revision_3_of_folder > > echo "r3 for file, i.e. the deleted file's history." > file > svn ps prop_r3_on_deleted_file deleted_r3 file_with_props > svn ps this_is_rev deleted_r3 file_with_props > > > svn ps prop_r3_on_deleted_file deleted_r3 file_with_props > svn ps this_is_rev copied_r3 other_file_with_props > > echo other_folder/file.r3. > other_folder/file.r3 > svn add other_folder/file.r3 > > svn ci -mr3 > svn up > > # to test log, remove these changes: > #echo "r4 for file, i.e. the deleted file's history." > file > #svn ps prop_r4_on_deleted_file deleted_r4 file_with_props > #svn ps this_is_rev deleted_r4 file_with_props > > svn rm folder > > echo "r4 for other_file, i.e. the copied-here file's *later* history!" > > other_file > > svn rm other_folder/file.r2 > echo other_folder/file.r4. > other_folder/file.r4 > svn add other_folder/file.r4 > > svn ps prop_r4_on_copied_here_file copied_r4 other_file_with_props > svn ps this_is_rev copied_r4 other_file_with_props > > svn ci -mr4 > svn up > > svn rm file > svn cp ^/other_f...@2 file > echo "now WORKING for file" >> file > > svn cp ^/other_fol...@2 folder > echo "now WORKING for folder/file.r2" >> folder/file.r2 > echo new > folder/now_WORKING_for_folder > svn add folder/now_WORKING_for_folder > > svn rm file_with_props > svn cp ^/other_file_with_pr...@2 file_with_props > > tmp=/tmp/testing_BASE > mkdir -p "$tmp" > > svn st > > set +e > > svn cat f...@base > > svn copy f...@base copy_of_file > cat copy_of_file > svn st -v copy_of_file > svn info copy_of_file > > svn copy -rBASE file copy2_of_file > cat copy2_of_file > svn st -v copy2_of_file > svn info copy2_of_file > > svn diff --old=f...@base --new=file > svn diff -rBASE file > > svn export f...@base "$tmp/exported" > cat "$tmp/exported" > > svn info f...@base > svn info -rBASE file > svn info -rBASE f...@base > svn info file > > echo "folder exists in -r1:2 and does not exist in -r3:4." > svn list folder > svn list -rBASE folder > svn list fol...@base > svn list -rBASE fol...@base > svn mkdir folder/another_one > touch folder/unversioned > svn list folder > svn rm --force folder/file.r2 > svn list folder > svn list -rBASE folder > svn list -rBASE fol...@base > svn list fol...@base > > svn log -v file > svn log -v f...@base > svn log -v -rBASE f...@base > svn log -v -rBASE file > > cat old_state_of_file > svn merge --accept=postpone -r1:HEAD file old_state_of_file > svn st old_state_of_file > cat old_state_of_file > svn revert old_state_of_file > cat old_state_of_file > svn merge --accept=postpone -r1:HEAD f...@base old_state_of_file > svn st old_state_of_file > cat old_state_of_file > svn revert old_state_of_file > cat old_state_of_file > svn merge --accept=postpone -r1:BASE f...@base old_state_of_file > svn st old_state_of_file > cat old_state_of_file > svn revert old_state_of_file > cat old_state_of_file > svn merge --accept=postpone -r1:BASE file old_state_of_file > svn st old_state_of_file > cat old_state_of_file > # don't svn revert old_state_of_file for mergeinfo: > > svn mergeinfo f...@base old_state_of_file > > svn proplist file_with_props > svn proplist file_with_pr...@base > #svn propedit > > svn propget this_is_rev file_with_props > svn propget this_is_rev file_with_pr...@base > > svn propset --revprop -r1 testrevprop value_in_r1 > svn propset --revprop -r2 testrevprop value_in_r2 > svn propdel --revprop -rBASE testrevprop > svn propset --revprop -rBASE newrevprop new_value > svn proplist --revprop -r1 > svn proplist --revprop -r2 > > svn blame file > svn blame -rBASE file > svn blame -rBASE f...@base > svn blame f...@base > > svn mkdir -m a_new_revision ^/r5 > svn update -rBASE file > ls -d r5 > > svn up > cd r5 > svn switch -rBASE ../folder > ls > > > svn, version 1.7.0 (dev build) > compiled Jan 26 2010, 22:16:34 > > Copyright (C) 2010 The Apache Software Foundation. > This software consists of contributions made by many people; > see the NOTICE file for more information. > Subversion is open source software, see http://subversion.apache.org/ > > The following repository access (RA) modules are available: > > * ra_neon : Module for accessing a repository via WebDAV protocol using Neon. > - handles 'http' scheme > - handles 'https' scheme > * ra_svn : Module for accessing a repository using the svn network protocol. > - handles 'svn' scheme > * ra_local : Module for accessing a repository on local disk. > - handles 'file' scheme > > + cd wc > + echo 'r1 for file, i.e. the deleted file'\''s history.' > + cp file old_state_of_file > + svn add file old_state_of_file > A file > A old_state_of_file > + mkdir folder > + echo r1 > + svn add folder > A folder > A folder/this_is_revision_1_of_folder > + echo file_with_props > + svn add file_with_props > A file_with_props > + svn ps prop_r1_on_deleted_file value_r1 file_with_props > property 'prop_r1_on_deleted_file' set on 'file_with_props' > + svn ps this_is_rev deleted_r1 file_with_props > property 'this_is_rev' set on 'file_with_props' > + svn ci -mr1 > Adding file > Adding file_with_props > Adding folder > Adding folder/this_is_revision_1_of_folder > Adding old_state_of_file > Transmitting file data .... > Committed revision 1. > + svn up > At revision 1. > + echo r2 > + svn add folder/no,_this_is_revision_2_of_folder > A folder/no,_this_is_revision_2_of_folder > + svn ps prop_r2_on_deleted_file deleted_r2 file_with_props > property 'prop_r2_on_deleted_file' set on 'file_with_props' > + svn ps this_is_rev deleted_r2 file_with_props > property 'this_is_rev' set on 'file_with_props' > + echo 'r2 for other_file, i.e. the *copied-here* file'\''s history!' > + svn add other_file > A other_file > + mkdir other_folder > + echo other_folder/file.r2. > + svn add other_folder > A other_folder > A other_folder/file.r2 > + echo other_file_with_props > + svn add other_file_with_props > A other_file_with_props > + svn ps prop_r2_on_copied_here_file copied_r2 other_file_with_props > property 'prop_r2_on_copied_here_file' set on 'other_file_with_props' > + svn ps this_is_rev copied_r2 other_file_with_props > property 'this_is_rev' set on 'other_file_with_props' > + svn ci -mr2 > Sending file_with_props > Adding folder/no,_this_is_revision_2_of_folder > Adding other_file > Adding other_file_with_props > Adding other_folder > Adding other_folder/file.r2 > Transmitting file data .... > Committed revision 2. > + svn up > At revision 2. > + echo r3 > + svn add folder/no,_this_is_revision_3_of_folder > A folder/no,_this_is_revision_3_of_folder > + echo 'r3 for file, i.e. the deleted file'\''s history.' > + svn ps prop_r3_on_deleted_file deleted_r3 file_with_props > property 'prop_r3_on_deleted_file' set on 'file_with_props' > + svn ps this_is_rev deleted_r3 file_with_props > property 'this_is_rev' set on 'file_with_props' > + svn ps prop_r3_on_deleted_file deleted_r3 file_with_props > property 'prop_r3_on_deleted_file' set on 'file_with_props' > + svn ps this_is_rev copied_r3 other_file_with_props > property 'this_is_rev' set on 'other_file_with_props' > + echo other_folder/file.r3. > + svn add other_folder/file.r3 > A other_folder/file.r3 > + svn ci -mr3 > Sending file > Sending file_with_props > Adding folder/no,_this_is_revision_3_of_folder > Sending other_file_with_props > Adding other_folder/file.r3 > Transmitting file data ... > Committed revision 3. > + svn up > At revision 3. > + svn rm folder > D folder/no,_this_is_revision_2_of_folder > D folder/no,_this_is_revision_3_of_folder > D folder/this_is_revision_1_of_folder > D folder > + echo 'r4 for other_file, i.e. the copied-here file'\''s *later* history!' > + svn rm other_folder/file.r2 > D other_folder/file.r2 > + echo other_folder/file.r4. > + svn add other_folder/file.r4 > A other_folder/file.r4 > + svn ps prop_r4_on_copied_here_file copied_r4 other_file_with_props > property 'prop_r4_on_copied_here_file' set on 'other_file_with_props' > + svn ps this_is_rev copied_r4 other_file_with_props > property 'this_is_rev' set on 'other_file_with_props' > + svn ci -mr4 > Deleting folder > Sending other_file > Sending other_file_with_props > Deleting other_folder/file.r2 > Adding other_folder/file.r4 > Transmitting file data .. > Committed revision 4. > + svn up > At revision 4. > + svn rm file > D file > + svn cp '^/other_f...@2' file > A file > + echo 'now WORKING for file' > + svn cp '^/other_fol...@2' folder > A folder/file.r2 > Checked out revision 2. > A folder > + echo 'now WORKING for folder/file.r2' > + echo new > + svn add folder/now_WORKING_for_folder > A folder/now_WORKING_for_folder > + svn rm file_with_props > D file_with_props > + svn cp '^/other_file_with_pr...@2' file_with_props > A file_with_props > + tmp=/tmp/testing_BASE > + mkdir -p /tmp/testing_BASE > + svn st > R + file > A + folder > M + folder/file.r2 > A folder/now_WORKING_for_folder > R + file_with_props > + set +e > + svn cat f...@base > r2 for other_file, i.e. the *copied-here* file's history! > + svn copy f...@base copy_of_file > A copy_of_file > + cat copy_of_file > r2 for other_file, i.e. the *copied-here* file's history! > + svn st -v copy_of_file > A + - 2 neels copy_of_file > + svn info copy_of_file > Path: copy_of_file > Name: copy_of_file > URL: file:///home/neels/hg/svn/tests/cat_replaced/repos/copy_of_file > Repository Root: file:///home/neels/hg/svn/tests/cat_replaced/repos > Repository UUID: c57cfc0c-0d49-11df-b658-41678fc56d06 > Revision: 4 > Node Kind: file > Schedule: add > Copied From URL: file:///home/neels/hg/svn/tests/cat_replaced/repos/other_file > Copied From Rev: 2 > Last Changed Author: neels > Last Changed Rev: 2 > Last Changed Date: 2010-01-30 03:47:17 +0100 (Sat, 30 Jan 2010) > Text Last Updated: 2010-01-30 03:47:26 +0100 (Sat, 30 Jan 2010) > Checksum: 74caf578c8e8a5a1a206e5ee3a0deacc > > + svn copy -rBASE file copy2_of_file > A copy2_of_file > + cat copy2_of_file > r2 for other_file, i.e. the *copied-here* file's history! > + svn st -v copy2_of_file > A + - 2 neels copy2_of_file > + svn info copy2_of_file > Path: copy2_of_file > Name: copy2_of_file > URL: file:///home/neels/hg/svn/tests/cat_replaced/repos/copy2_of_file > Repository Root: file:///home/neels/hg/svn/tests/cat_replaced/repos > Repository UUID: c57cfc0c-0d49-11df-b658-41678fc56d06 > Revision: 4 > Node Kind: file > Schedule: add > Copied From URL: file:///home/neels/hg/svn/tests/cat_replaced/repos/other_file > Copied From Rev: 2 > Last Changed Author: neels > Last Changed Rev: 2 > Last Changed Date: 2010-01-30 03:47:17 +0100 (Sat, 30 Jan 2010) > Text Last Updated: 2010-01-30 03:47:27 +0100 (Sat, 30 Jan 2010) > Checksum: 74caf578c8e8a5a1a206e5ee3a0deacc > > + svn diff --old=f...@base --new=file > Index: file > =================================================================== > --- file (working copy) > +++ file (working copy) > @@ -1 +1,2 @@ > r2 for other_file, i.e. the *copied-here* file's history! > +now WORKING for file > + svn diff -rBASE file > Index: file > =================================================================== > --- file (working copy) > +++ file (working copy) > @@ -1 +1,2 @@ > r2 for other_file, i.e. the *copied-here* file's history! > +now WORKING for file > + svn export f...@base /tmp/testing_BASE/exported > Export complete. > + cat /tmp/testing_BASE/exported > r2 for other_file, i.e. the *copied-here* file's history! > + svn info f...@base > Path: file > Name: file > URL: file:///home/neels/hg/svn/tests/cat_replaced/repos/file > Repository Root: file:///home/neels/hg/svn/tests/cat_replaced/repos > Repository UUID: c57cfc0c-0d49-11df-b658-41678fc56d06 > Revision: 4 > Node Kind: file > Last Changed Author: neels > Last Changed Rev: 3 > Last Changed Date: 2010-01-30 03:47:19 +0100 (Sat, 30 Jan 2010) > > + svn info -rBASE file > Path: other_file > Name: other_file > URL: file:///home/neels/hg/svn/tests/cat_replaced/repos/other_file > Repository Root: file:///home/neels/hg/svn/tests/cat_replaced/repos > Repository UUID: c57cfc0c-0d49-11df-b658-41678fc56d06 > Revision: 4 > Node Kind: file > Last Changed Author: neels > Last Changed Rev: 4 > Last Changed Date: 2010-01-30 03:47:21 +0100 (Sat, 30 Jan 2010) > > + svn info -rBASE f...@base > Path: file > Name: file > URL: file:///home/neels/hg/svn/tests/cat_replaced/repos/file > Repository Root: file:///home/neels/hg/svn/tests/cat_replaced/repos > Repository UUID: c57cfc0c-0d49-11df-b658-41678fc56d06 > Revision: 4 > Node Kind: file > Last Changed Author: neels > Last Changed Rev: 3 > Last Changed Date: 2010-01-30 03:47:19 +0100 (Sat, 30 Jan 2010) > > + svn info file > Path: file > Name: file > URL: file:///home/neels/hg/svn/tests/cat_replaced/repos/file > Repository Root: file:///home/neels/hg/svn/tests/cat_replaced/repos > Repository UUID: c57cfc0c-0d49-11df-b658-41678fc56d06 > Revision: 4 > Node Kind: file > Schedule: replace > Copied From URL: file:///home/neels/hg/svn/tests/cat_replaced/repos/other_file > Copied From Rev: 2 > Last Changed Author: neels > Last Changed Rev: 2 > Last Changed Date: 2010-01-30 03:47:17 +0100 (Sat, 30 Jan 2010) > Text Last Updated: 2010-01-30 03:47:23 +0100 (Sat, 30 Jan 2010) > Checksum: 74caf578c8e8a5a1a206e5ee3a0deacc > > + echo 'folder exists in -r1:2 and does not exist in -r3:4.' > folder exists in -r1:2 and does not exist in -r3:4. > + svn list folder > file.r2 > + svn list -rBASE folder > file.r2 > + svn list fol...@base > no,_this_is_revision_2_of_folder > this_is_revision_1_of_folder > + svn list -rBASE fol...@base > no,_this_is_revision_2_of_folder > this_is_revision_1_of_folder > + svn mkdir folder/another_one > A folder/another_one > + touch folder/unversioned > + svn list folder > file.r2 > + svn rm --force folder/file.r2 > D folder/file.r2 > + svn list folder > file.r2 > + svn list -rBASE folder > file.r2 > + svn list -rBASE fol...@base > no,_this_is_revision_2_of_folder > this_is_revision_1_of_folder > + svn list fol...@base > no,_this_is_revision_2_of_folder > this_is_revision_1_of_folder > + svn log -v file > ------------------------------------------------------------------------ > r4 | neels | 2010-01-30 03:47:21 +0100 (Sat, 30 Jan 2010) | 1 line > Changed paths: > D /folder > M /other_file > M /other_file_with_props > D /other_folder/file.r2 > A /other_folder/file.r4 > > r4 > ------------------------------------------------------------------------ > r2 | neels | 2010-01-30 03:47:17 +0100 (Sat, 30 Jan 2010) | 1 line > Changed paths: > M /file_with_props > A /folder/no,_this_is_revision_2_of_folder > A /other_file > A /other_file_with_props > A /other_folder > A /other_folder/file.r2 > > r2 > ------------------------------------------------------------------------ > + svn log -v f...@base > ------------------------------------------------------------------------ > r3 | neels | 2010-01-30 03:47:19 +0100 (Sat, 30 Jan 2010) | 1 line > Changed paths: > M /file > M /file_with_props > A /folder/no,_this_is_revision_3_of_folder > M /other_file_with_props > A /other_folder/file.r3 > > r3 > ------------------------------------------------------------------------ > r1 | neels | 2010-01-30 03:47:15 +0100 (Sat, 30 Jan 2010) | 1 line > Changed paths: > A /file > A /file_with_props > A /folder > A /folder/this_is_revision_1_of_folder > A /old_state_of_file > > r1 > ------------------------------------------------------------------------ > + svn log -v -rBASE f...@base > ------------------------------------------------------------------------ > + svn log -v -rBASE file > ------------------------------------------------------------------------ > r4 | neels | 2010-01-30 03:47:21 +0100 (Sat, 30 Jan 2010) | 1 line > Changed paths: > D /folder > M /other_file > M /other_file_with_props > D /other_folder/file.r2 > A /other_folder/file.r4 > > r4 > ------------------------------------------------------------------------ > + cat old_state_of_file > r1 for file, i.e. the deleted file's history. > + svn merge --accept=postpone -r1:HEAD file old_state_of_file > --- Merging r2 through r4 into 'old_state_of_file': > U old_state_of_file > --- Recording mergeinfo for merge of r2 through r4 into 'old_state_of_file': > U old_state_of_file > + svn st old_state_of_file > MM old_state_of_file > + cat old_state_of_file > r3 for file, i.e. the deleted file's history. > + svn revert old_state_of_file > Reverted 'old_state_of_file' > + cat old_state_of_file > r1 for file, i.e. the deleted file's history. > + svn merge --accept=postpone -r1:HEAD f...@base old_state_of_file > --- Merging r2 through r4 into 'old_state_of_file': > U old_state_of_file > --- Recording mergeinfo for merge of r2 through r4 into 'old_state_of_file': > U old_state_of_file > + svn st old_state_of_file > MM old_state_of_file > + cat old_state_of_file > r3 for file, i.e. the deleted file's history. > + svn revert old_state_of_file > Reverted 'old_state_of_file' > + cat old_state_of_file > r1 for file, i.e. the deleted file's history. > + svn merge --accept=postpone -r1:BASE f...@base old_state_of_file > --- Merging r2 through r4 into 'old_state_of_file': > U old_state_of_file > --- Recording mergeinfo for merge of r2 through r4 into 'old_state_of_file': > U old_state_of_file > + svn st old_state_of_file > MM old_state_of_file > + cat old_state_of_file > r3 for file, i.e. the deleted file's history. > + svn revert old_state_of_file > Reverted 'old_state_of_file' > + cat old_state_of_file > r1 for file, i.e. the deleted file's history. > + svn merge --accept=postpone -r1:BASE file old_state_of_file > --- Merging r2 through r4 into 'old_state_of_file': > U old_state_of_file > --- Recording mergeinfo for merge of r2 through r4 into 'old_state_of_file': > U old_state_of_file > + svn st old_state_of_file > MM old_state_of_file > + cat old_state_of_file > r3 for file, i.e. the deleted file's history. > + svn mergeinfo f...@base old_state_of_file > r3 > + svn proplist file_with_props > Properties on 'file_with_props': > prop_r2_on_copied_here_file > this_is_rev > + svn proplist file_with_pr...@base > Properties on 'file_with_props': > prop_r2_on_copied_here_file > this_is_rev > + svn propget this_is_rev file_with_props > copied_r2 > + svn propget this_is_rev file_with_pr...@base > copied_r2 > + svn propset --revprop -r1 testrevprop value_in_r1 > property 'testrevprop' set on repository revision 1 > + svn propset --revprop -r2 testrevprop value_in_r2 > property 'testrevprop' set on repository revision 2 > + svn propdel --revprop -rBASE testrevprop > subversion/svn/main.c:2244: (apr_err=205000) > svn: Try 'svn help' for more info > subversion/svn/propdel-cmd.c:108: (apr_err=205000) > subversion/svn/props.c:60: (apr_err=205000) > svn: Must specify the revision as a number, a date or 'HEAD' when operating > on a revision property > + svn propset --revprop -rBASE newrevprop new_value > subversion/svn/main.c:2244: (apr_err=205000) > svn: Try 'svn help' for more info > subversion/svn/propset-cmd.c:121: (apr_err=205000) > subversion/svn/props.c:60: (apr_err=205000) > svn: Must specify the revision as a number, a date or 'HEAD' when operating > on a revision property > + svn proplist --revprop -r1 > Unversioned properties on revision 1: > svn:log > svn:author > testrevprop > svn:date > + svn proplist --revprop -r2 > Unversioned properties on revision 2: > svn:log > svn:author > testrevprop > svn:date > + svn blame file > - - r2 for other_file, i.e. the *copied-here* file's history! > - - now WORKING for file > + svn blame -rBASE file > 4 neels r4 for other_file, i.e. the copied-here file's *later* > history! > + svn blame -rBASE f...@base > 3 neels r3 for file, i.e. the deleted file's history. > + svn blame f...@base > 3 neels r3 for file, i.e. the deleted file's history. > + svn mkdir -m a_new_revision '^/r5' > > Committed revision 5. > + svn update -rBASE file > At revision 4. > + ls -d r5 > ls: cannot access r5: No such file or directory > + svn up > A r5 > Updated to revision 5. > + cd r5 > + svn switch -rBASE ../folder > subversion/svn/switch-cmd.c:141: (apr_err=125002) > svn: '../folder' does not appear to be a URL > + ls > >