/*
* ====================================================================
* Copyright (c) 2004-2012 TMate Software Ltd. All rights reserved.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at http://svnkit.com/license.html
* If newer versions of this license are posted there, you may use a
* newer version instead, at your option.
* ====================================================================
*/
package org.tmatesoft.svn.core;
import java.util.Collection;
import org.tmatesoft.svn.core.internal.util.SVNHashSet;
/**
* The <b>SVNRevisionProperty</b> class represents revision properties - those
* unversioned properties supported by Subversion.
*
* <p>
* Revision properties are unversioned, so there is always a risk to
* lose information when modifying revision property values.
*
* @version 1.3
* @author TMate Software Ltd.
* @since 1.2
*/
public class SVNRevisionProperty {
/**
* An <span class="javastring">"txn-"</span> prefix for revision properties
* that when set as commit revision property would be available
* to the hook scripts, but not actually set on a commit.
*/
public static final String SVN_TXN_PREFIX = SVNProperty.SVN_PREFIX + "txn-";
private static final Collection REVISION_PROPS = new SVNHashSet();
static {
REVISION_PROPS.add(SVNRevisionProperty.AUTHOR);
REVISION_PROPS.add(SVNRevisionProperty.LOG);
REVISION_PROPS.add(SVNRevisionProperty.DATE);
REVISION_PROPS.add(SVNRevisionProperty.ORIGINAL_DATE);
REVISION_PROPS.add(SVNRevisionProperty.AUTOVERSIONED);
}
/**
* Says if the given revision property name is really a valid
* revision property name.
*
* @param name a property name
* @return <span class="javakeyword">true</span> if it's a
* revision property name, <span class="javakeyword">false</span>
* otherwise
*/
public static boolean isRevisionProperty(String name) {
return name != null && REVISION_PROPS.contains(name);
}
/**
* An <span class="javastring">"svn:author"</span> revision
* property (that holds the name of the revision's author).
*/
public static final String AUTHOR = "svn:author";
/**
* An <span class="javastring">"svn:log"</span> revision property -
* the one that stores a log message attached to a revision
* during a commit operation.
*/
public static final String LOG = "svn:log";
/**
* An <span class="javastring">"svn:date"</span> revision property
* that is a date & time stamp representing the time when the
* revision was created.
*/
public static final String DATE = "svn:date";
/**
* <span class="javastring">"svn:sync-lock"</span> revision property.
* @since 1.1, new in Subversion 1.4
*/
public static final String LOCK = "svn:sync-lock";
/**
* <span class="javastring">"svn:sync-from-url"</span> revision property.
* @since 1.1, new in Subversion 1.4
*/
public static final String FROM_URL = "svn:sync-from-url";
/**
* <span class="javastring">"svn:sync-from-uuid"</span> revision property.
* @since 1.1, new in Subversion 1.4
*/
public static final String FROM_UUID = "svn:sync-from-uuid";
/**
* <span class="javastring">"svn:sync-last-merged-rev"</span> revision property.
* @since 1.1, new in Subversion 1.4
*/
public static final String LAST_MERGED_REVISION = "svn:sync-last-merged-rev";
/**
* <span class="javastring">"svn:sync-currently-copying"</span> revision property.
* @since 1.1, new in Subversion 1.4
*/
public static final String CURRENTLY_COPYING = "svn:sync-currently-copying";
/**
* The presence of this fs revision property indicates that the
* revision was automatically generated by the mod_dav_svn
* autoversioning feature. The value is irrelevant.
*/
public static final String AUTOVERSIONED = "svn:autoversioned";
/**
* The fs revision property that stores a commit's "original" date.
*
* The <span class="javastring">svn:date</span> property must be monotonically increasing, along with
* the revision number. In certain scenarios, this may pose a problem
* when the revision represents a commit that occurred at a time which
* does not fit within the sequencing required for svn:date. This can
* happen, for instance, when the revision represents a commit to a
* foreign version control system, or possibly when two Subversion
* repositories are combined. This property can be used to record the
* TRUE, original date of the commit.
*/
public static final String ORIGINAL_DATE = "svn:original-date";
/**
* Ephemeral revision property that, when set as commit revision property,
* will be available to the hook scripts, but not actually set on a revision.
*/
public static final String SVN_TXN_CLIENT_COMPAT_VERSION = SVN_TXN_PREFIX + "client-compat-version";
/**
* Ephemeral revision property that, when set as commit revision property,
* will be available to the hook scripts, but not actually set on a revision.
*/
public static final String SVN_TXN_USER_AGENT = SVN_TXN_PREFIX + "user-agent";
}