How do you get the history of a file/folder property in SVN?

What's the easiest way to determine when a property was set on a file or folder? Basically, I'm looking for an equivalent of "svn blame" that works on properties.

The log subcommand enables one to get the complete history of a file or folder, including when the properties have been modified. However, it doesn't distinguish between a property modification and other types of modification, which of course also means that it won't tell you anything about the history of a particular property.

The status command differentiates between properties and other types of modifications, but only works on the working copy.

Blame, itself, only supports files, not directories, and it works on the content, not the properties.

Ideas?


The best I can think of is to write a little script or app that uses the svn propget command to dump the current property value to a text file, and then walks back through the revisions dumping the property to another text file and comparing the two. As soon as it detects a change, it prints out the revision number (actually the later revision number that made the change) along with the user who committed it.

Here's an example command to dump the svn:ignore property for the dictionary directory at revision 80:

svn propget -r 80 svn:ignore dictionary

Examining History, To find information about the history of a file or directory, use the svn log (per the file's svn:mime-type property—see the section called “File Content Type” for� 4. SVN Add – Add a new file to SVN repository. When you want to add a new file (or directory) to the repository you need to use SVN add command. The repository will have newly added file, only when you do SVN commit. Now let us add a new file called “thegeekstuff” to our repository. Create a file in local working copy


Revision Log Dialog, The top pane shows a list of revisions where changes to the file/folder have been committed. menu commands which you can use to get even more information about the project history. View the Subversion properties for the selected item. If you made a copy of a file but forgot to use the Subversion command to do so, you can repair that copy so the new file doesn't lose its history. Simply select both the old name (normal or modified) and the new name (unversioned) and use Context Menu → Repair Copy to pair the two files as a copy.


#!/bin/bash
# This is not a great solution, but it works for gathering the data

CURRENT_REVISION=95300
OLDEST_REVISION=93000
URL="file:///home/svn/repo/project/dir/target.c"
PROPERTY_NAME="svn:externals"

for i in `seq $OLDEST_REVISION $CURRENT_REVISION`
do
  svn -r$i propget "$PROPERTY_NAME" "$URL" | sed -e "s/^/$i\t/"
done

Getting Status Information, If you have set the svn:needs-lock property on a file, Subversion makes that file This icon shows files and folders which are not under version control, but have not Items which have been added with history have a + sign in the Text status� By default, svn diff ignores the ancestry of files and merely compares the contents of the two files being compared. If you use --notice-ancestry, the ancestry of the paths in question will be taken into consideration when comparing revisions (i.e., if you run svn diff on two files with identical contents but different ancestry, you will see


My svn-extensions toolbox now has svn-prop-annotate and (as a specialization) svn-mergeinfo-annotate commands. They perform poorly (because they run svn log and svn diff for each potential change), and may still have some dependencies and perculiarities to my particular working style, but try them if you're desperate enough.

Here's some sample output:

$ svn-mergeinfo-annotate --author karkat -l 5
67645 ingo.karka    Merged /branches/1.50/foobar:r67488
67423 ingo.karka    Merged /branches/1.50/foobar:r67315,67331
67339 ingo.karka    Merged /branches/1.50/foobar:r67279
53320 ingo.karka    Merged /branches/foo-1.01:r53317

History View, In SVN, both files and directories are versioned and have a history. of resources affected by this revision (modified, added, deleted or changed properties). You can request to view the revision history for any file or folder in the repository. If you made a copy of a file but forgot to use the Subversion command to do so, you can repair that copy so the new file doesn't lose its history. Simply select both the old name (normal or modified) and the new name (unversioned) and use Context Menu → Repair Copy to pair the two files as a copy.


Using the propget or proplist commands seem to be really, really slow.

For my purposes it was easy enough to do svn diff --properties-only on every revision and store it off. It stores enough information so that you can write some other scripts to do whatever comparing/blaming that is necessary without getting into the network shenanigans or whatever made propget/proplist so slow.

#!/bin/bash

# 7273 being the highest revision in my repository
for j in {1..7273}; do
    i=$((j-1))
    echo "$i:$j"
    svn diff --properties-only -r $i:$j https://... > propdiff.$j.txt
done

Management of SVN properties, Getting started / Management of SVN properties. Management of SVN properties. In the Properties view you can read and set the Subversion properties of a file or If the selected item is a directory, you can also set the property recursively on� It shows a graph of a file or folder through the history with all the revision where the file or folder was copied, moved, branched or tagged. We often get people asking questions why it needs to get the log for the repository root, or why it needs to get the full log from the HEAD revision back down to the first revision.


[PDF] Read more, of a set of files that change over time and are stored in a central repository using syncroSVNClient.bat - located in the install folder and started from command line. Relative to the root URL of the server on which the svn:externals property is� Open your Windows Settings and select Update & Security. Select Backup on the left navigation panel, then select Add a drive under Backup using File History. Choose the drive you want to use for backup. If all you want to do is create a backup solution and never think about it again, then you’re done. Just keep your external drive connected to your PC, or plug it in every so often, and you’ll get a backup of all your personal files.


SVN Resource History View, In SVN, both files and directories are versioned and have a history. of resources affected by this revision (modified, added, deleted or changed properties). You can request to view the revision history for any file or folder in the repository. If you want to see all files and folders in the repository, even those you have not checked out, then you have to hold down the Shift key when you click on the Check Repository button. The dialog uses colour coding to highlight the status.


Browsing Your Repository's History, Cornerstone provides two different views of your repository's history: of your repository's log in a format similar to the output of the svn log command. Revision properties (including log message, author, date and change set) are the focus for quickly gaining an overview of the most recent changes made to a file or folder. The path to the file external must be a direct child of the folder where you set the svn:externals property. The URL for a file external must be in the same repository as the URL that the file external will be inserted into; inter-repository file externals are not supported.