blob: 20faacf11fa1f0dbfe2fcc7b7bff240f511f8740 [file] [log] [blame]
package org.apache.maven.scm.provider.tfs.command;
/*
* 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.
*/
import org.apache.maven.scm.ScmException;
import org.apache.maven.scm.ScmFileSet;
import org.apache.maven.scm.ScmVersion;
import org.apache.maven.scm.command.checkin.AbstractCheckInCommand;
import org.apache.maven.scm.command.checkin.CheckInScmResult;
import org.apache.maven.scm.provider.ScmProviderRepository;
import org.apache.maven.scm.provider.tfs.TfsScmProviderRepository;
import org.apache.maven.scm.provider.tfs.command.consumer.ErrorStreamConsumer;
import org.apache.maven.scm.provider.tfs.command.consumer.FileListConsumer;
import org.codehaus.plexus.util.StringUtils;
/**
*
*/
public class TfsCheckInCommand
extends AbstractCheckInCommand
{
private static final String TFS_CHECKIN_POLICIES_ERROR = "TF10139";
protected CheckInScmResult executeCheckInCommand( ScmProviderRepository r, ScmFileSet f, String m, ScmVersion v )
throws ScmException
{
TfsCommand command = createCommand( r, f, m );
FileListConsumer fileConsumer = new FileListConsumer();
ErrorStreamConsumer err = new ErrorStreamConsumer();
int status = command.execute( fileConsumer, err );
getLogger().debug( "status of checkin command is= " + status + "; err= " + err.getOutput() );
//[SCM-753] support TFS checkin-policies - TFS returns error, that can be ignored.
if ( err.hasBeenFed() && err.getOutput().startsWith( TFS_CHECKIN_POLICIES_ERROR ) )
{
getLogger().debug( "exclusion: got error " + TFS_CHECKIN_POLICIES_ERROR
+ " due to checkin policies. Ignoring it..." );
}
if ( status != 0 || ( err.hasBeenFed() && !err.getOutput().startsWith( TFS_CHECKIN_POLICIES_ERROR ) ) )
{
getLogger().error( "ERROR in command: " + command.getCommandString()
+ "; Error code for TFS checkin command - " + status );
return new CheckInScmResult( command.getCommandString(), "Error code for TFS checkin command - " + status,
err.getOutput(), false );
}
return new CheckInScmResult( command.getCommandString(), fileConsumer.getFiles() );
}
public TfsCommand createCommand( ScmProviderRepository r, ScmFileSet f, String m )
{
TfsCommand command = new TfsCommand( "checkin", r, f, getLogger() );
command.addArgument( "-noprompt" );
if ( StringUtils.isNotBlank( m ) )
{
command.addArgument( "-comment:" + m );
}
command.addArgument( f );
TfsScmProviderRepository tfsScmProviderRepo = (TfsScmProviderRepository) r;
if ( tfsScmProviderRepo.isUseCheckinPolicies() )
{
// handle TFS-policies (by adding "/override:";Auto-Build: Version Update";)
command.addArgument( "/override:checkin_policy" );
}
return command;
}
}