[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Taking stock: BASE keyword on the command line

From: Neels J Hofmeyr <neels_at_elego.de>
Date: Sat, 30 Jan 2010 04:14:41 +0100

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.

'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 file_at_BASE' and
'svn blame -rBASE file_at_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 folder_at_BASE' and
'svn list -rBASE folder_at_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.

'svn log -v file_at_BASE'
'svn log -v -rBASE file_at_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 file_at_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
]]]

'svn info file_at_BASE' and
'svn info -rBASE file_at_BASE'
both show only "what I checked out".
[[[
+ svn info file_at_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

Now To The Drawing Boards, you guys!
*ALL OUR "BASE" ARE BELONG TO US!!*

~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_file_at_2 file
echo "now WORKING for file" >> file

svn cp ^/other_folder_at_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_props_at_2 file_with_props

tmp=/tmp/testing_BASE
mkdir -p "$tmp"

svn st

set +e

svn cat file_at_BASE

svn copy file_at_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=file_at_BASE --new=file
svn diff -rBASE file

svn export file_at_BASE "$tmp/exported"
cat "$tmp/exported"

svn info file_at_BASE
svn info -rBASE file
svn info -rBASE file_at_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 folder_at_BASE
svn list -rBASE folder_at_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 folder_at_BASE
svn list folder_at_BASE

svn log -v file
svn log -v file_at_BASE
svn log -v -rBASE file_at_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 file_at_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_at_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 file_at_BASE old_state_of_file

svn proplist file_with_props
svn proplist file_with_props_at_BASE
#svn propedit

svn propget this_is_rev file_with_props
svn propget this_is_rev file_with_props_at_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 file_at_BASE
svn blame file_at_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_file_at_2' file
A file
+ echo 'now WORKING for file'
+ svn cp '^/other_folder_at_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_props_at_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 file_at_BASE
r2 for other_file, i.e. the *copied-here* file's history!
+ svn copy file_at_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=file_at_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 file_at_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 file_at_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 file_at_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 folder_at_BASE
no,_this_is_revision_2_of_folder
this_is_revision_1_of_folder
+ svn list -rBASE folder_at_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 folder_at_BASE
no,_this_is_revision_2_of_folder
this_is_revision_1_of_folder
+ svn list folder_at_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 file_at_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 file_at_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 file_at_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_at_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 file_at_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_props_at_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_props_at_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 file_at_BASE
     3 neels r3 for file, i.e. the deleted file's history.
+ svn blame file_at_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

Received on 2010-01-30 04:15:33 CET

This is an archived mail posted to the Subversion Dev mailing list.