All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.maven.scm.provider.ScmProviderRepository Maven / Gradle / Ivy

There is a newer version: 2.1.0
Show newest version
package org.apache.maven.scm.provider;

/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */

/**
 * @author Trygve Laugstøl
 * @author Emmanuel Venisse
 * @author Chris Graham
 *
 */
public abstract class ScmProviderRepository
{
    private String user;

    private String password;

    private boolean persistCheckout = false;

    /**
     * @since 1.4
     */
    private boolean pushChanges = true;

    /**
     * Some SCMs have the concept of a work item (or task) which may need to be
     * specified to allow changes to be pushed or delivered to a target.
     * This allows you to answer the question: For this workItem, what changed?
     * Auditors have been known to love this... :)
     * SCMs known to implement this are:
     * 
    *
  • IBM Rational Team Concert (workItem) *
  • Microsoft Team Foundation Server (workItem) *
  • IBM Rational ClearQuest Enabled UCM ClearCase (task) *
* There may be others that support this feature. *

* These SCMs can be configured to reject a push/deliver unless additional * information (by way of a workItem/task) is supplied. *

* This field is only relevant when pushChanges = true. *

* It should be noted however, when pushChanges = true, a workItem does not * need to be set, as the need for a workItem may be optional. * * @since 1.9.5 */ private String workItem; /** * @return The user. */ public String getUser() { return user; } /** * Set the user. * * @param user The user */ public void setUser( String user ) { this.user = user; } /** * @return The password. */ public String getPassword() { return password; } /** * Set the password. * * @param password The user password */ public void setPassword( String password ) { this.password = password; } /** * Should distributed changes be pushed to the central repository? * For many distributed SCMs like Git, a change like a commit * is only stored in your local copy of the repository. Pushing * the change allows your to more easily share it with other users. * @since 1.4 */ public boolean isPushChanges() { return pushChanges; } /** * @since 1.4 * @param pushChanges */ public void setPushChanges( boolean pushChanges ) { this.pushChanges = pushChanges; } /** * @return The workItem. * @since 1.9.5 */ public String getWorkItem() { return workItem; } /** * Set the workItem. * * @param user The workItem. * @since 1.9.5 */ public void setWorkItem( String workItem ) { this.workItem = workItem; } /** * Will checkouts using this repository be persisted so they can * be refreshed in the future? This property is of concern to SCMs * like Perforce and Clearcase where the server must track where a * user checks out to. If false, the server entry (clientspec in Perforce * terminology) will be deleted after the checkout is complete so the * files will not be able to be updated. *

* This setting can be overriden by using the system property * "maven.scm.persistcheckout" to true. *

* The default is false. See SCM-113 for more detail. */ public boolean isPersistCheckout() { String persist = System.getProperty( "maven.scm.persistcheckout" ); if ( persist != null ) { return Boolean.valueOf( persist ).booleanValue(); } return persistCheckout; } public void setPersistCheckout( boolean persistCheckout ) { this.persistCheckout = persistCheckout; } /** * Get a {@link ScmProviderRepository} that represents the parent folder in the repository. * Useful when the repository does not exist yet and we need to create it from the parent. * * @return the parent repository * @throws UnsupportedOperationException unless overridden by subclass */ public ScmProviderRepository getParent() { throw new UnsupportedOperationException(); } /** * Get the relative path between the repository provided as argument and the current repository. * * @param ancestor another repository that should be ancestor of this one * @return the relative path or null if it can't be resolved * @throws UnsupportedOperationException unless overridden by subclass */ public String getRelativePath( ScmProviderRepository ancestor ) { throw new UnsupportedOperationException(); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy