You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Sebastian Annies (JIRA)" <ji...@codehaus.org> on 2007/08/21 14:37:47 UTC

[jira] Created: (CONTINUUM-1402) Syncing with Perforce on Linux/Unix/Bash fails

Syncing with Perforce on Linux/Unix/Bash fails
----------------------------------------------

                 Key: CONTINUUM-1402
                 URL: http://jira.codehaus.org/browse/CONTINUUM-1402
             Project: Continuum
          Issue Type: Bug
          Components: Integration - Maven 2, SCM
    Affects Versions: 1.1-beta-2
         Environment: Bash
            Reporter: Sebastian Annies
            Priority: Critical


When a client is created it is named:

E.g.{{monospaced}} sannies-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\6{{monospaced}}

that is ok, but now comes the sync command and uses following commandline

{{monospaced}}
/bin/bash -c "p4 -d /opt/continuum-1.1-beta-3-SNAPSHOT/apps/continuum/webapp/WEB-INF/working-directory/1 -cbackground-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\1 sync"
{{monospaced}}

The Bash now removes the backslashes in the client name! The result is that the client is not existent and perforce returns with an error. 

I think continuum does everything allright but we need the ticket here to be reminded to switch to a new plexus-utils or maven-scm if it is fixed there. 

The Problem starts in 'PerforceCheckOutCommand':
{{monospaced}}

    public static Commandline createCommandLine( PerforceScmProviderRepository repo, File workingDirectory,
                                                 ScmVersion version, String specname )
    {
        Commandline command = PerforceScmProvider.createP4Command( repo, workingDirectory );
{color:red} 
        command.createArgument().setValue( "-c" + specname  );
{color}
        command.createArgument().setValue( "sync" );

        // Use a simple heuristic to determine if we should use the Force flag
        // on sync.  Forcing sync is a HUGE performance hit but is required in
        // rare instances where source is somehow deleted.  If the target
        // directory is completely empty, assume a force is required.  If
        // not empty, we assume a previous checkout was already done and a normal
        // sync will suffice.
        // SCM-110
        String[] files = workingDirectory.list();
        if ( files == null || files.length == 0 )
        {
            // We need to force so checkout to an empty directory will work.
            command.createArgument().setValue( "-f" );
        }

        // Not sure what to do here. I'm unclear whether we should be
        // sync'ing each file individually to the label or just sync the
        // entire contents of the workingDir. I'm going to assume the
        // latter until the exact semantics are clearer.
        if ( version != null && StringUtils.isNotEmpty( version.getName() ) )
        {
            command.createArgument().setValue( "@" + version.getName() );
        }
        return command;
{{monospaced}}

The {{monospaced}}specname  {{monospaced}} contains the backslashes and is these are neither escaped nor quoted! Hmm ... Is that a job that the CommandLine should handle? I think so!

The next thing I will do is to file an issue at plexus-utils and link the issues.



-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] Commented: (CONTINUUM-1402) Syncing with Perforce on Linux/Unix/Bash fails

Posted by "Sudharma Rao (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/CONTINUUM-1402?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_115881 ] 

Sudharma Rao commented on CONTINUUM-1402:
-----------------------------------------

Work around:  Create a duplicate client using the auto-generated client as a template

> Syncing with Perforce on Linux/Unix/Bash fails
> ----------------------------------------------
>
>                 Key: CONTINUUM-1402
>                 URL: http://jira.codehaus.org/browse/CONTINUUM-1402
>             Project: Continuum
>          Issue Type: Bug
>          Components: Integration - Maven 2, SCM
>    Affects Versions: 1.1-beta-2
>         Environment: Bash
>            Reporter: Sebastian Annies
>            Priority: Critical
>
> When a client is created it is named:
> E.g.{{monospaced}} sannies-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\6{{monospaced}}
> that is ok, but now comes the sync command and uses following commandline
> {{monospaced}}
> /bin/bash -c "p4 -d /opt/continuum-1.1-beta-3-SNAPSHOT/apps/continuum/webapp/WEB-INF/working-directory/1 -cbackground-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\1 sync"
> {{monospaced}}
> The Bash now removes the backslashes in the client name! The result is that the client is not existent and perforce returns with an error. 
> I think continuum does everything allright but we need the ticket here to be reminded to switch to a new plexus-utils or maven-scm if it is fixed there. 
> The Problem starts in 'PerforceCheckOutCommand':
> {{monospaced}}
>     public static Commandline createCommandLine( PerforceScmProviderRepository repo, File workingDirectory,
>                                                  ScmVersion version, String specname )
>     {
>         Commandline command = PerforceScmProvider.createP4Command( repo, workingDirectory );
> {color:red} 
>         command.createArgument().setValue( "-c" + specname  );
> {color}
>         command.createArgument().setValue( "sync" );
>         // Use a simple heuristic to determine if we should use the Force flag
>         // on sync.  Forcing sync is a HUGE performance hit but is required in
>         // rare instances where source is somehow deleted.  If the target
>         // directory is completely empty, assume a force is required.  If
>         // not empty, we assume a previous checkout was already done and a normal
>         // sync will suffice.
>         // SCM-110
>         String[] files = workingDirectory.list();
>         if ( files == null || files.length == 0 )
>         {
>             // We need to force so checkout to an empty directory will work.
>             command.createArgument().setValue( "-f" );
>         }
>         // Not sure what to do here. I'm unclear whether we should be
>         // sync'ing each file individually to the label or just sync the
>         // entire contents of the workingDir. I'm going to assume the
>         // latter until the exact semantics are clearer.
>         if ( version != null && StringUtils.isNotEmpty( version.getName() ) )
>         {
>             command.createArgument().setValue( "@" + version.getName() );
>         }
>         return command;
> {{monospaced}}
> The {{monospaced}}specname  {{monospaced}} contains the backslashes and is these are neither escaped nor quoted! Hmm ... Is that a job that the CommandLine should handle? I think so!
> The next thing I will do is to file an issue at plexus-utils and link the issues.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] Commented: (CONTINUUM-1402) Syncing with Perforce on Linux/Unix/Bash fails

Posted by "Sebastian Annies (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/CONTINUUM-1402?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_105305 ] 

Sebastian Annies commented on CONTINUUM-1402:
---------------------------------------------

MORE READABLE HERE:

When a client is created it is named:

E.g. {{sannies-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\6}}

that is ok, but now comes the sync command and uses following commandline

{{/bin/bash c "p4 -d /opt/continuum-1.1-beta-3-SNAPSHOT/apps/continuum/webapp/WEB-INF/working-directory/1 -cbackground-sojus-MavenSCM\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\1 sync"}}

The Bash now removes the backslashes in the client name! The result is that the client is not existent and perforce returns with an error.

I think continuum does everything allright but we need the ticket here to be reminded to switch to a new plexus-utils or maven-scm if it is fixed there.

The Problem starts in 'PerforceCheckOutCommand':


{{
public static Commandline createCommandLine( PerforceScmProviderRepository repo, File workingDirectory,
                                                           ScmVersion version, String specname )
{
 Commandline command = PerforceScmProvider.createP4Command( repo, workingDirectory );
 {color.red}
 command.createArgument().setValue( "-c" + specname );{color}
 command.createArgument().setValue( "sync" );
 
 // Use a simple heuristic to determine if we should use the Force flag
 // on sync. Forcing sync is a HUGE performance hit but is required in
 // rare instances where source is somehow deleted. If the target
 // directory is completely empty, assume a force is required. If
 // not empty, we assume a previous checkout was already done and a normal
 // sync will suffice.
 // SCM-110
 String[] files = workingDirectory.list();
 if ( files == null || files.length == 0 )
 { 
  // We need to force so checkout to an empty directory will work. command.createArgument().setValue( "-f" ); }
  // Not sure what to do here. I'm unclear whether we should be
  // sync'ing each file individually to the label or just sync the
  // entire contents of the workingDir. I'm going to assume the
  // latter until the exact semantics are clearer.
  if ( version != null && StringUtils.isNotEmpty( version.getName() ) )
   { command.createArgument().setValue( "@" + version.getName() ); }
 }

}}

The {{specname }} contains the backslashes and is these are neither escaped nor quoted! Hmm ... Is that a job that the CommandLine should handle? I think so!

The next thing I will do is to file an issue at plexus-utils and link the issues.


> Syncing with Perforce on Linux/Unix/Bash fails
> ----------------------------------------------
>
>                 Key: CONTINUUM-1402
>                 URL: http://jira.codehaus.org/browse/CONTINUUM-1402
>             Project: Continuum
>          Issue Type: Bug
>          Components: Integration - Maven 2, SCM
>    Affects Versions: 1.1-beta-2
>         Environment: Bash
>            Reporter: Sebastian Annies
>            Priority: Critical
>
> When a client is created it is named:
> E.g.{{monospaced}} sannies-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\6{{monospaced}}
> that is ok, but now comes the sync command and uses following commandline
> {{monospaced}}
> /bin/bash -c "p4 -d /opt/continuum-1.1-beta-3-SNAPSHOT/apps/continuum/webapp/WEB-INF/working-directory/1 -cbackground-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\1 sync"
> {{monospaced}}
> The Bash now removes the backslashes in the client name! The result is that the client is not existent and perforce returns with an error. 
> I think continuum does everything allright but we need the ticket here to be reminded to switch to a new plexus-utils or maven-scm if it is fixed there. 
> The Problem starts in 'PerforceCheckOutCommand':
> {{monospaced}}
>     public static Commandline createCommandLine( PerforceScmProviderRepository repo, File workingDirectory,
>                                                  ScmVersion version, String specname )
>     {
>         Commandline command = PerforceScmProvider.createP4Command( repo, workingDirectory );
> {color:red} 
>         command.createArgument().setValue( "-c" + specname  );
> {color}
>         command.createArgument().setValue( "sync" );
>         // Use a simple heuristic to determine if we should use the Force flag
>         // on sync.  Forcing sync is a HUGE performance hit but is required in
>         // rare instances where source is somehow deleted.  If the target
>         // directory is completely empty, assume a force is required.  If
>         // not empty, we assume a previous checkout was already done and a normal
>         // sync will suffice.
>         // SCM-110
>         String[] files = workingDirectory.list();
>         if ( files == null || files.length == 0 )
>         {
>             // We need to force so checkout to an empty directory will work.
>             command.createArgument().setValue( "-f" );
>         }
>         // Not sure what to do here. I'm unclear whether we should be
>         // sync'ing each file individually to the label or just sync the
>         // entire contents of the workingDir. I'm going to assume the
>         // latter until the exact semantics are clearer.
>         if ( version != null && StringUtils.isNotEmpty( version.getName() ) )
>         {
>             command.createArgument().setValue( "@" + version.getName() );
>         }
>         return command;
> {{monospaced}}
> The {{monospaced}}specname  {{monospaced}} contains the backslashes and is these are neither escaped nor quoted! Hmm ... Is that a job that the CommandLine should handle? I think so!
> The next thing I will do is to file an issue at plexus-utils and link the issues.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] Commented: (CONTINUUM-1402) Syncing with Perforce on Linux/Unix/Bash fails

Posted by "Matthias Wurm (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/CONTINUUM-1402?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_106308 ] 

Matthias Wurm commented on CONTINUUM-1402:
------------------------------------------

I guess there is a problem with backslashes in the command:

After setting loglevel to debug I've seen that maven-scm wants to do the following:

2007-09-03 19:55:35,908 [pool-1-thread-1] DEBUG ScmManager:default             - Executing: /bin/bash -c "p4 -d /data/local/continuum-1.1-beta-2/apps/continuum/webapp/WEB-INF/working-directory/3 -p perforce.e.secunet.de:1666 -chostname-MavenSCM-\data\local\continuum-1.1-beta-2\apps\continuum\webapp\WEB-INF\working-directory\3 sync -f"

Executing the command manually on my console removes the backslashes, hence the command fails
Client 'hostname-MavenSCM-datalocalcontinuum-1.1-beta-2appscontinuumwebappWEB-INFworking-directory2' unknown - use 'client' command to create it.

Setting the clientspec inside single quotes like this works on the console:
/bin/bash -c "p4 -d /data/local/continuum-1.1-beta-2/apps/continuum/webapp/WEB-INF/working-directory/3 -p perforce.e.secunet.de:1666 -c'hostname-MavenSCM-\data\local\continuum-1.1-beta-2\apps\continuum\webapp\WEB-INF\working-directory\3' sync -f"

Maybe changing the maven-scm-provider to add single quotes around the clientspec name might fix this issue.

> Syncing with Perforce on Linux/Unix/Bash fails
> ----------------------------------------------
>
>                 Key: CONTINUUM-1402
>                 URL: http://jira.codehaus.org/browse/CONTINUUM-1402
>             Project: Continuum
>          Issue Type: Bug
>          Components: Integration - Maven 2, SCM
>    Affects Versions: 1.1-beta-2
>         Environment: Bash
>            Reporter: Sebastian Annies
>            Priority: Critical
>
> When a client is created it is named:
> E.g.{{monospaced}} sannies-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\6{{monospaced}}
> that is ok, but now comes the sync command and uses following commandline
> {{monospaced}}
> /bin/bash -c "p4 -d /opt/continuum-1.1-beta-3-SNAPSHOT/apps/continuum/webapp/WEB-INF/working-directory/1 -cbackground-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\1 sync"
> {{monospaced}}
> The Bash now removes the backslashes in the client name! The result is that the client is not existent and perforce returns with an error. 
> I think continuum does everything allright but we need the ticket here to be reminded to switch to a new plexus-utils or maven-scm if it is fixed there. 
> The Problem starts in 'PerforceCheckOutCommand':
> {{monospaced}}
>     public static Commandline createCommandLine( PerforceScmProviderRepository repo, File workingDirectory,
>                                                  ScmVersion version, String specname )
>     {
>         Commandline command = PerforceScmProvider.createP4Command( repo, workingDirectory );
> {color:red} 
>         command.createArgument().setValue( "-c" + specname  );
> {color}
>         command.createArgument().setValue( "sync" );
>         // Use a simple heuristic to determine if we should use the Force flag
>         // on sync.  Forcing sync is a HUGE performance hit but is required in
>         // rare instances where source is somehow deleted.  If the target
>         // directory is completely empty, assume a force is required.  If
>         // not empty, we assume a previous checkout was already done and a normal
>         // sync will suffice.
>         // SCM-110
>         String[] files = workingDirectory.list();
>         if ( files == null || files.length == 0 )
>         {
>             // We need to force so checkout to an empty directory will work.
>             command.createArgument().setValue( "-f" );
>         }
>         // Not sure what to do here. I'm unclear whether we should be
>         // sync'ing each file individually to the label or just sync the
>         // entire contents of the workingDir. I'm going to assume the
>         // latter until the exact semantics are clearer.
>         if ( version != null && StringUtils.isNotEmpty( version.getName() ) )
>         {
>             command.createArgument().setValue( "@" + version.getName() );
>         }
>         return command;
> {{monospaced}}
> The {{monospaced}}specname  {{monospaced}} contains the backslashes and is these are neither escaped nor quoted! Hmm ... Is that a job that the CommandLine should handle? I think so!
> The next thing I will do is to file an issue at plexus-utils and link the issues.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] Commented: (CONTINUUM-1402) Syncing with Perforce on Linux/Unix/Bash fails

Posted by "Jason Pringle (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/CONTINUUM-1402?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_106023 ] 

Jason Pringle commented on CONTINUUM-1402:
------------------------------------------

This may be related to CONTINUUM-1351.

I see the same error, but do see that the clients exist (check with p4 clients).  If I copy/paste the command into a terminal (and escape it) it seems to work.  Also, I haven't seen any changes in the perforceSCM provider in quite some time, so suspect something within Continuum is causing the issue (probably something that changed between alpha-2 and beta-1).

> Syncing with Perforce on Linux/Unix/Bash fails
> ----------------------------------------------
>
>                 Key: CONTINUUM-1402
>                 URL: http://jira.codehaus.org/browse/CONTINUUM-1402
>             Project: Continuum
>          Issue Type: Bug
>          Components: Integration - Maven 2, SCM
>    Affects Versions: 1.1-beta-2
>         Environment: Bash
>            Reporter: Sebastian Annies
>            Priority: Critical
>
> When a client is created it is named:
> E.g.{{monospaced}} sannies-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\6{{monospaced}}
> that is ok, but now comes the sync command and uses following commandline
> {{monospaced}}
> /bin/bash -c "p4 -d /opt/continuum-1.1-beta-3-SNAPSHOT/apps/continuum/webapp/WEB-INF/working-directory/1 -cbackground-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\1 sync"
> {{monospaced}}
> The Bash now removes the backslashes in the client name! The result is that the client is not existent and perforce returns with an error. 
> I think continuum does everything allright but we need the ticket here to be reminded to switch to a new plexus-utils or maven-scm if it is fixed there. 
> The Problem starts in 'PerforceCheckOutCommand':
> {{monospaced}}
>     public static Commandline createCommandLine( PerforceScmProviderRepository repo, File workingDirectory,
>                                                  ScmVersion version, String specname )
>     {
>         Commandline command = PerforceScmProvider.createP4Command( repo, workingDirectory );
> {color:red} 
>         command.createArgument().setValue( "-c" + specname  );
> {color}
>         command.createArgument().setValue( "sync" );
>         // Use a simple heuristic to determine if we should use the Force flag
>         // on sync.  Forcing sync is a HUGE performance hit but is required in
>         // rare instances where source is somehow deleted.  If the target
>         // directory is completely empty, assume a force is required.  If
>         // not empty, we assume a previous checkout was already done and a normal
>         // sync will suffice.
>         // SCM-110
>         String[] files = workingDirectory.list();
>         if ( files == null || files.length == 0 )
>         {
>             // We need to force so checkout to an empty directory will work.
>             command.createArgument().setValue( "-f" );
>         }
>         // Not sure what to do here. I'm unclear whether we should be
>         // sync'ing each file individually to the label or just sync the
>         // entire contents of the workingDir. I'm going to assume the
>         // latter until the exact semantics are clearer.
>         if ( version != null && StringUtils.isNotEmpty( version.getName() ) )
>         {
>             command.createArgument().setValue( "@" + version.getName() );
>         }
>         return command;
> {{monospaced}}
> The {{monospaced}}specname  {{monospaced}} contains the backslashes and is these are neither escaped nor quoted! Hmm ... Is that a job that the CommandLine should handle? I think so!
> The next thing I will do is to file an issue at plexus-utils and link the issues.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] Issue Comment Edited: (CONTINUUM-1402) Syncing with Perforce on Linux/Unix/Bash fails

Posted by "Matthias Wurm (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/CONTINUUM-1402?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_106308 ] 

Matthias Wurm edited comment on CONTINUUM-1402 at 9/3/07 1:05 PM:
------------------------------------------------------------------

I guess there is a problem with backslashes in the command:

After setting loglevel to debug I've seen that maven-scm wants to do the following:

{noformat} 2007-09-03 19:55:35,908 [pool-1-thread-1] DEBUG ScmManager:default             - Executing: /bin/bash -c "p4 -d /data/local/continuum-1.1-beta-2/apps/continuum/webapp/WEB-INF/working-directory/3 -p perforce.e.secunet.de:1666 -chostname-MavenSCM-\data\local\continuum-1.1-beta-2\apps\continuum\webapp\WEB-INF\working-directory\3 sync -f"{noformat}

Executing the command manually on my console removes the backslashes, hence the command fails
{noformat}Client 'hostname-MavenSCM-datalocalcontinuum-1.1-beta-2appscontinuumwebappWEB-INFworking-directory2' unknown - use 'client' command to create it.{noformat}

Setting the clientspec inside single quotes like this works on the console:
{noformat}/bin/bash -c "p4 -d /data/local/continuum-1.1-beta-2/apps/continuum/webapp/WEB-INF/working-directory/3 -p perforce.e.secunet.de:1666 -c'hostname-MavenSCM-\data\local\continuum-1.1-beta-2\apps\continuum\webapp\WEB-INF\working-directory\3' sync -f"{noformat}

Maybe changing the maven-scm-provider to add single quotes around the clientspec name might fix this issue.


 was:
I guess there is a problem with backslashes in the command:

After setting loglevel to debug I've seen that maven-scm wants to do the following:

2007-09-03 19:55:35,908 [pool-1-thread-1] DEBUG ScmManager:default             - Executing: /bin/bash --c "p4 -d /data/local/continuum-1.1-beta-2/apps/continuum/webapp/WEB-INF/working-directory/3 -p perforce.e.secunet.de:1666 -chostname-MavenSCM-\data\local\continuum-1.1-beta-2\apps\continuum\webapp\WEB-INF\working-directory\3 sync -f"

Executing the command manually on my console removes the backslashes, hence the command fails
Client 'hostname-MavenSCM-datalocalcontinuum-1.1-beta-2appscontinuumwebappWEB-INFworking-directory2' unknown - use 'client' command to create it.

Setting the clientspec inside single quotes like this works on the console:
/bin/bash -c "p4 -d /data/local/continuum-1.1-beta-2/apps/continuum/webapp/WEB-INF/working-directory/3 -p perforce.e.secunet.de:1666 -c'hostname-MavenSCM-\data\local\continuum-1.1-beta-2\apps\continuum\webapp\WEB-INF\working-directory\3' sync -f"

Maybe changing the maven-scm-provider to add single quotes around the clientspec name might fix this issue.

> Syncing with Perforce on Linux/Unix/Bash fails
> ----------------------------------------------
>
>                 Key: CONTINUUM-1402
>                 URL: http://jira.codehaus.org/browse/CONTINUUM-1402
>             Project: Continuum
>          Issue Type: Bug
>          Components: Integration - Maven 2, SCM
>    Affects Versions: 1.1-beta-2
>         Environment: Bash
>            Reporter: Sebastian Annies
>            Priority: Critical
>
> When a client is created it is named:
> E.g.{{monospaced}} sannies-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\6{{monospaced}}
> that is ok, but now comes the sync command and uses following commandline
> {{monospaced}}
> /bin/bash -c "p4 -d /opt/continuum-1.1-beta-3-SNAPSHOT/apps/continuum/webapp/WEB-INF/working-directory/1 -cbackground-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\1 sync"
> {{monospaced}}
> The Bash now removes the backslashes in the client name! The result is that the client is not existent and perforce returns with an error. 
> I think continuum does everything allright but we need the ticket here to be reminded to switch to a new plexus-utils or maven-scm if it is fixed there. 
> The Problem starts in 'PerforceCheckOutCommand':
> {{monospaced}}
>     public static Commandline createCommandLine( PerforceScmProviderRepository repo, File workingDirectory,
>                                                  ScmVersion version, String specname )
>     {
>         Commandline command = PerforceScmProvider.createP4Command( repo, workingDirectory );
> {color:red} 
>         command.createArgument().setValue( "-c" + specname  );
> {color}
>         command.createArgument().setValue( "sync" );
>         // Use a simple heuristic to determine if we should use the Force flag
>         // on sync.  Forcing sync is a HUGE performance hit but is required in
>         // rare instances where source is somehow deleted.  If the target
>         // directory is completely empty, assume a force is required.  If
>         // not empty, we assume a previous checkout was already done and a normal
>         // sync will suffice.
>         // SCM-110
>         String[] files = workingDirectory.list();
>         if ( files == null || files.length == 0 )
>         {
>             // We need to force so checkout to an empty directory will work.
>             command.createArgument().setValue( "-f" );
>         }
>         // Not sure what to do here. I'm unclear whether we should be
>         // sync'ing each file individually to the label or just sync the
>         // entire contents of the workingDir. I'm going to assume the
>         // latter until the exact semantics are clearer.
>         if ( version != null && StringUtils.isNotEmpty( version.getName() ) )
>         {
>             command.createArgument().setValue( "@" + version.getName() );
>         }
>         return command;
> {{monospaced}}
> The {{monospaced}}specname  {{monospaced}} contains the backslashes and is these are neither escaped nor quoted! Hmm ... Is that a job that the CommandLine should handle? I think so!
> The next thing I will do is to file an issue at plexus-utils and link the issues.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] Issue Comment Edited: (CONTINUUM-1402) Syncing with Perforce on Linux/Unix/Bash fails

Posted by "Matthias Wurm (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/CONTINUUM-1402?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_106308 ] 

Matthias Wurm edited comment on CONTINUUM-1402 at 10/15/07 9:22 AM:
--------------------------------------------------------------------

I guess there is a problem with backslashes in the command:

After setting loglevel to debug I've seen that maven-scm wants to do the following:

{{2007-09-03 19:55:35,908 [pool-1-thread-1] DEBUG ScmManager:default             - Executing: /bin/bash -c "p4 -d /data/local/continuum-1.1-beta-2/apps/continuum/webapp/WEB-INF/working-directory/3 -p p4server:1666 -chostname-MavenSCM-\data\local\continuum-1.1-beta-2\apps\continuum\webapp\WEB-INF\working-directory\3 sync -f"}}

Executing the command manually on my console removes the backslashes, hence the command fails
{noformat}Client 'hostname-MavenSCM-datalocalcontinuum-1.1-beta-2appscontinuumwebappWEB-INFworking-directory2' unknown - use 'client' command to create it.{noformat}

Setting the clientspec inside single quotes like this works on the console:
{noformat}/bin/bash -c "p4 -d /data/local/continuum-1.1-beta-2/apps/continuum/webapp/WEB-INF/working-directory/3 -p perforce.e.secunet.de:1666 -c'hostname-MavenSCM-\data\local\continuum-1.1-beta-2\apps\continuum\webapp\WEB-INF\working-directory\3' sync -f"{noformat}

Maybe changing the maven-scm-provider to add single quotes around the clientspec name might fix this issue.


 was:
I guess there is a problem with backslashes in the command:

After setting loglevel to debug I've seen that maven-scm wants to do the following:

{noformat} 2007-09-03 19:55:35,908 [pool-1-thread-1] DEBUG ScmManager:default             - Executing: /bin/bash -c "p4 -d /data/local/continuum-1.1-beta-2/apps/continuum/webapp/WEB-INF/working-directory/3 -p p4server:1666 -chostname-MavenSCM-\data\local\continuum-1.1-beta-2\apps\continuum\webapp\WEB-INF\working-directory\3 sync -f"{noformat}

Executing the command manually on my console removes the backslashes, hence the command fails
{noformat}Client 'hostname-MavenSCM-datalocalcontinuum-1.1-beta-2appscontinuumwebappWEB-INFworking-directory2' unknown - use 'client' command to create it.{noformat}

Setting the clientspec inside single quotes like this works on the console:
{noformat}/bin/bash -c "p4 -d /data/local/continuum-1.1-beta-2/apps/continuum/webapp/WEB-INF/working-directory/3 -p perforce.e.secunet.de:1666 -c'hostname-MavenSCM-\data\local\continuum-1.1-beta-2\apps\continuum\webapp\WEB-INF\working-directory\3' sync -f"{noformat}

Maybe changing the maven-scm-provider to add single quotes around the clientspec name might fix this issue.

> Syncing with Perforce on Linux/Unix/Bash fails
> ----------------------------------------------
>
>                 Key: CONTINUUM-1402
>                 URL: http://jira.codehaus.org/browse/CONTINUUM-1402
>             Project: Continuum
>          Issue Type: Bug
>          Components: Integration - Maven 2, SCM
>    Affects Versions: 1.1-beta-2
>         Environment: Bash
>            Reporter: Sebastian Annies
>            Priority: Critical
>
> When a client is created it is named:
> E.g.{{monospaced}} sannies-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\6{{monospaced}}
> that is ok, but now comes the sync command and uses following commandline
> {{monospaced}}
> /bin/bash -c "p4 -d /opt/continuum-1.1-beta-3-SNAPSHOT/apps/continuum/webapp/WEB-INF/working-directory/1 -cbackground-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\1 sync"
> {{monospaced}}
> The Bash now removes the backslashes in the client name! The result is that the client is not existent and perforce returns with an error. 
> I think continuum does everything allright but we need the ticket here to be reminded to switch to a new plexus-utils or maven-scm if it is fixed there. 
> The Problem starts in 'PerforceCheckOutCommand':
> {{monospaced}}
>     public static Commandline createCommandLine( PerforceScmProviderRepository repo, File workingDirectory,
>                                                  ScmVersion version, String specname )
>     {
>         Commandline command = PerforceScmProvider.createP4Command( repo, workingDirectory );
> {color:red} 
>         command.createArgument().setValue( "-c" + specname  );
> {color}
>         command.createArgument().setValue( "sync" );
>         // Use a simple heuristic to determine if we should use the Force flag
>         // on sync.  Forcing sync is a HUGE performance hit but is required in
>         // rare instances where source is somehow deleted.  If the target
>         // directory is completely empty, assume a force is required.  If
>         // not empty, we assume a previous checkout was already done and a normal
>         // sync will suffice.
>         // SCM-110
>         String[] files = workingDirectory.list();
>         if ( files == null || files.length == 0 )
>         {
>             // We need to force so checkout to an empty directory will work.
>             command.createArgument().setValue( "-f" );
>         }
>         // Not sure what to do here. I'm unclear whether we should be
>         // sync'ing each file individually to the label or just sync the
>         // entire contents of the workingDir. I'm going to assume the
>         // latter until the exact semantics are clearer.
>         if ( version != null && StringUtils.isNotEmpty( version.getName() ) )
>         {
>             command.createArgument().setValue( "@" + version.getName() );
>         }
>         return command;
> {{monospaced}}
> The {{monospaced}}specname  {{monospaced}} contains the backslashes and is these are neither escaped nor quoted! Hmm ... Is that a job that the CommandLine should handle? I think so!
> The next thing I will do is to file an issue at plexus-utils and link the issues.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] Issue Comment Edited: (CONTINUUM-1402) Syncing with Perforce on Linux/Unix/Bash fails

Posted by "Sebastian Annies (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/CONTINUUM-1402?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_105305 ] 

Sebastian Annies edited comment on CONTINUUM-1402 at 8/21/07 7:41 AM:
----------------------------------------------------------------------

MORE READABLE HERE:

When a client is created it is named:

E.g. {{sannies-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\6}}

that is ok, but now comes the sync command and uses following commandline

{{/bin/bash c "p4 -d /opt/continuum-1.1-beta-3-SNAPSHOT/apps/continuum/webapp/WEB-INF/working-directory/1 -cbackground-sojus-MavenSCM\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\1 sync"}}

The Bash now removes the backslashes in the client name! The result is that the client is not existent and perforce returns with an error.

I think continuum does everything allright but we need the ticket here to be reminded to switch to a new plexus-utils or maven-scm if it is fixed there.

The Problem starts in 'PerforceCheckOutCommand':


{quote}public static Commandline createCommandLine( PerforceScmProviderRepository repo, File workingDirectory,
                                                           ScmVersion version, String specname )
{
 Commandline command = PerforceScmProvider.createP4Command( repo, workingDirectory );
 {color:red}command.createArgument().setValue( "-c" + specname );{color}
 command.createArgument().setValue( "sync" );
 
 // Use a simple heuristic to determine if we should use the Force flag
 // on sync. Forcing sync is a HUGE performance hit but is required in
 // rare instances where source is somehow deleted. If the target
 // directory is completely empty, assume a force is required. If
 // not empty, we assume a previous checkout was already done and a normal
 // sync will suffice.
 // SCM-110
 String[] files = workingDirectory.list();
 if ( files == null || files.length == 0 )
 { 
  // We need to force so checkout to an empty directory will work. command.createArgument().setValue( "-f" ); }
  // Not sure what to do here. I'm unclear whether we should be
  // sync'ing each file individually to the label or just sync the
  // entire contents of the workingDir. I'm going to assume the
  // latter until the exact semantics are clearer.
  if ( version != null && StringUtils.isNotEmpty( version.getName() ) )
   { command.createArgument().setValue( "@" + version.getName() ); }
 }

{quote}

The {{specname}} contains the backslashes and is these are neither escaped nor quoted! Hmm ... Is that a job that the CommandLine should handle? I think so!

The next thing I will do is to file an issue at plexus-utils and link the issues.



 was:
MORE READABLE HERE:

When a client is created it is named:

E.g. {{sannies-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\6}}

that is ok, but now comes the sync command and uses following commandline

{{/bin/bash c "p4 -d /opt/continuum-1.1-beta-3-SNAPSHOT/apps/continuum/webapp/WEB-INF/working-directory/1 -cbackground-sojus-MavenSCM\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\1 sync"}}

The Bash now removes the backslashes in the client name! The result is that the client is not existent and perforce returns with an error.

I think continuum does everything allright but we need the ticket here to be reminded to switch to a new plexus-utils or maven-scm if it is fixed there.

The Problem starts in 'PerforceCheckOutCommand':


{{public static Commandline createCommandLine( PerforceScmProviderRepository repo, File workingDirectory,
                                                           ScmVersion version, String specname )
{
 Commandline command = PerforceScmProvider.createP4Command( repo, workingDirectory );
 {color:red}command.createArgument().setValue( "-c" + specname );{color}
 command.createArgument().setValue( "sync" );
 
 // Use a simple heuristic to determine if we should use the Force flag
 // on sync. Forcing sync is a HUGE performance hit but is required in
 // rare instances where source is somehow deleted. If the target
 // directory is completely empty, assume a force is required. If
 // not empty, we assume a previous checkout was already done and a normal
 // sync will suffice.
 // SCM-110
 String[] files = workingDirectory.list();
 if ( files == null || files.length == 0 )
 { 
  // We need to force so checkout to an empty directory will work. command.createArgument().setValue( "-f" ); }
  // Not sure what to do here. I'm unclear whether we should be
  // sync'ing each file individually to the label or just sync the
  // entire contents of the workingDir. I'm going to assume the
  // latter until the exact semantics are clearer.
  if ( version != null && StringUtils.isNotEmpty( version.getName() ) )
   { command.createArgument().setValue( "@" + version.getName() ); }
 }

}}

The {{specname}} contains the backslashes and is these are neither escaped nor quoted! Hmm ... Is that a job that the CommandLine should handle? I think so!

The next thing I will do is to file an issue at plexus-utils and link the issues.


> Syncing with Perforce on Linux/Unix/Bash fails
> ----------------------------------------------
>
>                 Key: CONTINUUM-1402
>                 URL: http://jira.codehaus.org/browse/CONTINUUM-1402
>             Project: Continuum
>          Issue Type: Bug
>          Components: Integration - Maven 2, SCM
>    Affects Versions: 1.1-beta-2
>         Environment: Bash
>            Reporter: Sebastian Annies
>            Priority: Critical
>
> When a client is created it is named:
> E.g.{{monospaced}} sannies-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\6{{monospaced}}
> that is ok, but now comes the sync command and uses following commandline
> {{monospaced}}
> /bin/bash -c "p4 -d /opt/continuum-1.1-beta-3-SNAPSHOT/apps/continuum/webapp/WEB-INF/working-directory/1 -cbackground-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\1 sync"
> {{monospaced}}
> The Bash now removes the backslashes in the client name! The result is that the client is not existent and perforce returns with an error. 
> I think continuum does everything allright but we need the ticket here to be reminded to switch to a new plexus-utils or maven-scm if it is fixed there. 
> The Problem starts in 'PerforceCheckOutCommand':
> {{monospaced}}
>     public static Commandline createCommandLine( PerforceScmProviderRepository repo, File workingDirectory,
>                                                  ScmVersion version, String specname )
>     {
>         Commandline command = PerforceScmProvider.createP4Command( repo, workingDirectory );
> {color:red} 
>         command.createArgument().setValue( "-c" + specname  );
> {color}
>         command.createArgument().setValue( "sync" );
>         // Use a simple heuristic to determine if we should use the Force flag
>         // on sync.  Forcing sync is a HUGE performance hit but is required in
>         // rare instances where source is somehow deleted.  If the target
>         // directory is completely empty, assume a force is required.  If
>         // not empty, we assume a previous checkout was already done and a normal
>         // sync will suffice.
>         // SCM-110
>         String[] files = workingDirectory.list();
>         if ( files == null || files.length == 0 )
>         {
>             // We need to force so checkout to an empty directory will work.
>             command.createArgument().setValue( "-f" );
>         }
>         // Not sure what to do here. I'm unclear whether we should be
>         // sync'ing each file individually to the label or just sync the
>         // entire contents of the workingDir. I'm going to assume the
>         // latter until the exact semantics are clearer.
>         if ( version != null && StringUtils.isNotEmpty( version.getName() ) )
>         {
>             command.createArgument().setValue( "@" + version.getName() );
>         }
>         return command;
> {{monospaced}}
> The {{monospaced}}specname  {{monospaced}} contains the backslashes and is these are neither escaped nor quoted! Hmm ... Is that a job that the CommandLine should handle? I think so!
> The next thing I will do is to file an issue at plexus-utils and link the issues.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] Commented: (CONTINUUM-1402) Syncing with Perforce on Linux/Unix/Bash fails

Posted by "Sebastian Annies (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/CONTINUUM-1402?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_109968 ] 

Sebastian Annies commented on CONTINUUM-1402:
---------------------------------------------

this would require a fix in the Maven Perforce SCM Provider ... 
Can you file an issue there and link it here? 

> Syncing with Perforce on Linux/Unix/Bash fails
> ----------------------------------------------
>
>                 Key: CONTINUUM-1402
>                 URL: http://jira.codehaus.org/browse/CONTINUUM-1402
>             Project: Continuum
>          Issue Type: Bug
>          Components: Integration - Maven 2, SCM
>    Affects Versions: 1.1-beta-2
>         Environment: Bash
>            Reporter: Sebastian Annies
>            Priority: Critical
>
> When a client is created it is named:
> E.g.{{monospaced}} sannies-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\6{{monospaced}}
> that is ok, but now comes the sync command and uses following commandline
> {{monospaced}}
> /bin/bash -c "p4 -d /opt/continuum-1.1-beta-3-SNAPSHOT/apps/continuum/webapp/WEB-INF/working-directory/1 -cbackground-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\1 sync"
> {{monospaced}}
> The Bash now removes the backslashes in the client name! The result is that the client is not existent and perforce returns with an error. 
> I think continuum does everything allright but we need the ticket here to be reminded to switch to a new plexus-utils or maven-scm if it is fixed there. 
> The Problem starts in 'PerforceCheckOutCommand':
> {{monospaced}}
>     public static Commandline createCommandLine( PerforceScmProviderRepository repo, File workingDirectory,
>                                                  ScmVersion version, String specname )
>     {
>         Commandline command = PerforceScmProvider.createP4Command( repo, workingDirectory );
> {color:red} 
>         command.createArgument().setValue( "-c" + specname  );
> {color}
>         command.createArgument().setValue( "sync" );
>         // Use a simple heuristic to determine if we should use the Force flag
>         // on sync.  Forcing sync is a HUGE performance hit but is required in
>         // rare instances where source is somehow deleted.  If the target
>         // directory is completely empty, assume a force is required.  If
>         // not empty, we assume a previous checkout was already done and a normal
>         // sync will suffice.
>         // SCM-110
>         String[] files = workingDirectory.list();
>         if ( files == null || files.length == 0 )
>         {
>             // We need to force so checkout to an empty directory will work.
>             command.createArgument().setValue( "-f" );
>         }
>         // Not sure what to do here. I'm unclear whether we should be
>         // sync'ing each file individually to the label or just sync the
>         // entire contents of the workingDir. I'm going to assume the
>         // latter until the exact semantics are clearer.
>         if ( version != null && StringUtils.isNotEmpty( version.getName() ) )
>         {
>             command.createArgument().setValue( "@" + version.getName() );
>         }
>         return command;
> {{monospaced}}
> The {{monospaced}}specname  {{monospaced}} contains the backslashes and is these are neither escaped nor quoted! Hmm ... Is that a job that the CommandLine should handle? I think so!
> The next thing I will do is to file an issue at plexus-utils and link the issues.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] Issue Comment Edited: (CONTINUUM-1402) Syncing with Perforce on Linux/Unix/Bash fails

Posted by "Matthias Wurm (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/CONTINUUM-1402?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_106308 ] 

Matthias Wurm edited comment on CONTINUUM-1402 at 9/3/07 1:06 PM:
------------------------------------------------------------------

I guess there is a problem with backslashes in the command:

After setting loglevel to debug I've seen that maven-scm wants to do the following:

{noformat} 2007-09-03 19:55:35,908 [pool-1-thread-1] DEBUG ScmManager:default             - Executing: /bin/bash -c "p4 -d /data/local/continuum-1.1-beta-2/apps/continuum/webapp/WEB-INF/working-directory/3 -p p4server:1666 -chostname-MavenSCM-\data\local\continuum-1.1-beta-2\apps\continuum\webapp\WEB-INF\working-directory\3 sync -f"{noformat}

Executing the command manually on my console removes the backslashes, hence the command fails
{noformat}Client 'hostname-MavenSCM-datalocalcontinuum-1.1-beta-2appscontinuumwebappWEB-INFworking-directory2' unknown - use 'client' command to create it.{noformat}

Setting the clientspec inside single quotes like this works on the console:
{noformat}/bin/bash -c "p4 -d /data/local/continuum-1.1-beta-2/apps/continuum/webapp/WEB-INF/working-directory/3 -p perforce.e.secunet.de:1666 -c'hostname-MavenSCM-\data\local\continuum-1.1-beta-2\apps\continuum\webapp\WEB-INF\working-directory\3' sync -f"{noformat}

Maybe changing the maven-scm-provider to add single quotes around the clientspec name might fix this issue.


 was:
I guess there is a problem with backslashes in the command:

After setting loglevel to debug I've seen that maven-scm wants to do the following:

{noformat} 2007-09-03 19:55:35,908 [pool-1-thread-1] DEBUG ScmManager:default             - Executing: /bin/bash -c "p4 -d /data/local/continuum-1.1-beta-2/apps/continuum/webapp/WEB-INF/working-directory/3 -p perforce.e.secunet.de:1666 -chostname-MavenSCM-\data\local\continuum-1.1-beta-2\apps\continuum\webapp\WEB-INF\working-directory\3 sync -f"{noformat}

Executing the command manually on my console removes the backslashes, hence the command fails
{noformat}Client 'hostname-MavenSCM-datalocalcontinuum-1.1-beta-2appscontinuumwebappWEB-INFworking-directory2' unknown - use 'client' command to create it.{noformat}

Setting the clientspec inside single quotes like this works on the console:
{noformat}/bin/bash -c "p4 -d /data/local/continuum-1.1-beta-2/apps/continuum/webapp/WEB-INF/working-directory/3 -p perforce.e.secunet.de:1666 -c'hostname-MavenSCM-\data\local\continuum-1.1-beta-2\apps\continuum\webapp\WEB-INF\working-directory\3' sync -f"{noformat}

Maybe changing the maven-scm-provider to add single quotes around the clientspec name might fix this issue.

> Syncing with Perforce on Linux/Unix/Bash fails
> ----------------------------------------------
>
>                 Key: CONTINUUM-1402
>                 URL: http://jira.codehaus.org/browse/CONTINUUM-1402
>             Project: Continuum
>          Issue Type: Bug
>          Components: Integration - Maven 2, SCM
>    Affects Versions: 1.1-beta-2
>         Environment: Bash
>            Reporter: Sebastian Annies
>            Priority: Critical
>
> When a client is created it is named:
> E.g.{{monospaced}} sannies-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\6{{monospaced}}
> that is ok, but now comes the sync command and uses following commandline
> {{monospaced}}
> /bin/bash -c "p4 -d /opt/continuum-1.1-beta-3-SNAPSHOT/apps/continuum/webapp/WEB-INF/working-directory/1 -cbackground-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\1 sync"
> {{monospaced}}
> The Bash now removes the backslashes in the client name! The result is that the client is not existent and perforce returns with an error. 
> I think continuum does everything allright but we need the ticket here to be reminded to switch to a new plexus-utils or maven-scm if it is fixed there. 
> The Problem starts in 'PerforceCheckOutCommand':
> {{monospaced}}
>     public static Commandline createCommandLine( PerforceScmProviderRepository repo, File workingDirectory,
>                                                  ScmVersion version, String specname )
>     {
>         Commandline command = PerforceScmProvider.createP4Command( repo, workingDirectory );
> {color:red} 
>         command.createArgument().setValue( "-c" + specname  );
> {color}
>         command.createArgument().setValue( "sync" );
>         // Use a simple heuristic to determine if we should use the Force flag
>         // on sync.  Forcing sync is a HUGE performance hit but is required in
>         // rare instances where source is somehow deleted.  If the target
>         // directory is completely empty, assume a force is required.  If
>         // not empty, we assume a previous checkout was already done and a normal
>         // sync will suffice.
>         // SCM-110
>         String[] files = workingDirectory.list();
>         if ( files == null || files.length == 0 )
>         {
>             // We need to force so checkout to an empty directory will work.
>             command.createArgument().setValue( "-f" );
>         }
>         // Not sure what to do here. I'm unclear whether we should be
>         // sync'ing each file individually to the label or just sync the
>         // entire contents of the workingDir. I'm going to assume the
>         // latter until the exact semantics are clearer.
>         if ( version != null && StringUtils.isNotEmpty( version.getName() ) )
>         {
>             command.createArgument().setValue( "@" + version.getName() );
>         }
>         return command;
> {{monospaced}}
> The {{monospaced}}specname  {{monospaced}} contains the backslashes and is these are neither escaped nor quoted! Hmm ... Is that a job that the CommandLine should handle? I think so!
> The next thing I will do is to file an issue at plexus-utils and link the issues.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] Commented: (CONTINUUM-1402) Syncing with Perforce on Linux/Unix/Bash fails

Posted by "Sebastian Annies (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/CONTINUUM-1402?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_106601 ] 

Sebastian Annies commented on CONTINUUM-1402:
---------------------------------------------

Can someone concerned please have a look into PLXUTILS-44 and comment my comment? I just don't know how to fix that correctly! Any hints? 

> Syncing with Perforce on Linux/Unix/Bash fails
> ----------------------------------------------
>
>                 Key: CONTINUUM-1402
>                 URL: http://jira.codehaus.org/browse/CONTINUUM-1402
>             Project: Continuum
>          Issue Type: Bug
>          Components: Integration - Maven 2, SCM
>    Affects Versions: 1.1-beta-2
>         Environment: Bash
>            Reporter: Sebastian Annies
>            Priority: Critical
>
> When a client is created it is named:
> E.g.{{monospaced}} sannies-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\6{{monospaced}}
> that is ok, but now comes the sync command and uses following commandline
> {{monospaced}}
> /bin/bash -c "p4 -d /opt/continuum-1.1-beta-3-SNAPSHOT/apps/continuum/webapp/WEB-INF/working-directory/1 -cbackground-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\1 sync"
> {{monospaced}}
> The Bash now removes the backslashes in the client name! The result is that the client is not existent and perforce returns with an error. 
> I think continuum does everything allright but we need the ticket here to be reminded to switch to a new plexus-utils or maven-scm if it is fixed there. 
> The Problem starts in 'PerforceCheckOutCommand':
> {{monospaced}}
>     public static Commandline createCommandLine( PerforceScmProviderRepository repo, File workingDirectory,
>                                                  ScmVersion version, String specname )
>     {
>         Commandline command = PerforceScmProvider.createP4Command( repo, workingDirectory );
> {color:red} 
>         command.createArgument().setValue( "-c" + specname  );
> {color}
>         command.createArgument().setValue( "sync" );
>         // Use a simple heuristic to determine if we should use the Force flag
>         // on sync.  Forcing sync is a HUGE performance hit but is required in
>         // rare instances where source is somehow deleted.  If the target
>         // directory is completely empty, assume a force is required.  If
>         // not empty, we assume a previous checkout was already done and a normal
>         // sync will suffice.
>         // SCM-110
>         String[] files = workingDirectory.list();
>         if ( files == null || files.length == 0 )
>         {
>             // We need to force so checkout to an empty directory will work.
>             command.createArgument().setValue( "-f" );
>         }
>         // Not sure what to do here. I'm unclear whether we should be
>         // sync'ing each file individually to the label or just sync the
>         // entire contents of the workingDir. I'm going to assume the
>         // latter until the exact semantics are clearer.
>         if ( version != null && StringUtils.isNotEmpty( version.getName() ) )
>         {
>             command.createArgument().setValue( "@" + version.getName() );
>         }
>         return command;
> {{monospaced}}
> The {{monospaced}}specname  {{monospaced}} contains the backslashes and is these are neither escaped nor quoted! Hmm ... Is that a job that the CommandLine should handle? I think so!
> The next thing I will do is to file an issue at plexus-utils and link the issues.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] Commented: (CONTINUUM-1402) Syncing with Perforce on Linux/Unix/Bash fails

Posted by "Emmanuel Venisse (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/CONTINUUM-1402?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_106076 ] 

Emmanuel Venisse commented on CONTINUUM-1402:
---------------------------------------------

What would be the command to use that will be correct? Can you provide a patch for PLXUTILS-44 ?

INFO: In actual Continuum version, plexus-utils use /bin/bash , the new plexus-utils code use /bin/sh

> Syncing with Perforce on Linux/Unix/Bash fails
> ----------------------------------------------
>
>                 Key: CONTINUUM-1402
>                 URL: http://jira.codehaus.org/browse/CONTINUUM-1402
>             Project: Continuum
>          Issue Type: Bug
>          Components: Integration - Maven 2, SCM
>    Affects Versions: 1.1-beta-2
>         Environment: Bash
>            Reporter: Sebastian Annies
>            Priority: Critical
>
> When a client is created it is named:
> E.g.{{monospaced}} sannies-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\6{{monospaced}}
> that is ok, but now comes the sync command and uses following commandline
> {{monospaced}}
> /bin/bash -c "p4 -d /opt/continuum-1.1-beta-3-SNAPSHOT/apps/continuum/webapp/WEB-INF/working-directory/1 -cbackground-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\1 sync"
> {{monospaced}}
> The Bash now removes the backslashes in the client name! The result is that the client is not existent and perforce returns with an error. 
> I think continuum does everything allright but we need the ticket here to be reminded to switch to a new plexus-utils or maven-scm if it is fixed there. 
> The Problem starts in 'PerforceCheckOutCommand':
> {{monospaced}}
>     public static Commandline createCommandLine( PerforceScmProviderRepository repo, File workingDirectory,
>                                                  ScmVersion version, String specname )
>     {
>         Commandline command = PerforceScmProvider.createP4Command( repo, workingDirectory );
> {color:red} 
>         command.createArgument().setValue( "-c" + specname  );
> {color}
>         command.createArgument().setValue( "sync" );
>         // Use a simple heuristic to determine if we should use the Force flag
>         // on sync.  Forcing sync is a HUGE performance hit but is required in
>         // rare instances where source is somehow deleted.  If the target
>         // directory is completely empty, assume a force is required.  If
>         // not empty, we assume a previous checkout was already done and a normal
>         // sync will suffice.
>         // SCM-110
>         String[] files = workingDirectory.list();
>         if ( files == null || files.length == 0 )
>         {
>             // We need to force so checkout to an empty directory will work.
>             command.createArgument().setValue( "-f" );
>         }
>         // Not sure what to do here. I'm unclear whether we should be
>         // sync'ing each file individually to the label or just sync the
>         // entire contents of the workingDir. I'm going to assume the
>         // latter until the exact semantics are clearer.
>         if ( version != null && StringUtils.isNotEmpty( version.getName() ) )
>         {
>             command.createArgument().setValue( "@" + version.getName() );
>         }
>         return command;
> {{monospaced}}
> The {{monospaced}}specname  {{monospaced}} contains the backslashes and is these are neither escaped nor quoted! Hmm ... Is that a job that the CommandLine should handle? I think so!
> The next thing I will do is to file an issue at plexus-utils and link the issues.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] Issue Comment Edited: (CONTINUUM-1402) Syncing with Perforce on Linux/Unix/Bash fails

Posted by "Sebastian Annies (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/CONTINUUM-1402?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_105305 ] 

Sebastian Annies edited comment on CONTINUUM-1402 at 8/21/07 7:40 AM:
----------------------------------------------------------------------

MORE READABLE HERE:

When a client is created it is named:

E.g. {{sannies-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\6}}

that is ok, but now comes the sync command and uses following commandline

{{/bin/bash c "p4 -d /opt/continuum-1.1-beta-3-SNAPSHOT/apps/continuum/webapp/WEB-INF/working-directory/1 -cbackground-sojus-MavenSCM\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\1 sync"}}

The Bash now removes the backslashes in the client name! The result is that the client is not existent and perforce returns with an error.

I think continuum does everything allright but we need the ticket here to be reminded to switch to a new plexus-utils or maven-scm if it is fixed there.

The Problem starts in 'PerforceCheckOutCommand':


{{public static Commandline createCommandLine( PerforceScmProviderRepository repo, File workingDirectory,
                                                           ScmVersion version, String specname )
{
 Commandline command = PerforceScmProvider.createP4Command( repo, workingDirectory );
 {color:red}command.createArgument().setValue( "-c" + specname );{color}
 command.createArgument().setValue( "sync" );
 
 // Use a simple heuristic to determine if we should use the Force flag
 // on sync. Forcing sync is a HUGE performance hit but is required in
 // rare instances where source is somehow deleted. If the target
 // directory is completely empty, assume a force is required. If
 // not empty, we assume a previous checkout was already done and a normal
 // sync will suffice.
 // SCM-110
 String[] files = workingDirectory.list();
 if ( files == null || files.length == 0 )
 { 
  // We need to force so checkout to an empty directory will work. command.createArgument().setValue( "-f" ); }
  // Not sure what to do here. I'm unclear whether we should be
  // sync'ing each file individually to the label or just sync the
  // entire contents of the workingDir. I'm going to assume the
  // latter until the exact semantics are clearer.
  if ( version != null && StringUtils.isNotEmpty( version.getName() ) )
   { command.createArgument().setValue( "@" + version.getName() ); }
 }

}}

The {{specname}} contains the backslashes and is these are neither escaped nor quoted! Hmm ... Is that a job that the CommandLine should handle? I think so!

The next thing I will do is to file an issue at plexus-utils and link the issues.



 was:
MORE READABLE HERE:

When a client is created it is named:

E.g. {{sannies-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\6}}

that is ok, but now comes the sync command and uses following commandline

{{/bin/bash c "p4 -d /opt/continuum-1.1-beta-3-SNAPSHOT/apps/continuum/webapp/WEB-INF/working-directory/1 -cbackground-sojus-MavenSCM\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\1 sync"}}

The Bash now removes the backslashes in the client name! The result is that the client is not existent and perforce returns with an error.

I think continuum does everything allright but we need the ticket here to be reminded to switch to a new plexus-utils or maven-scm if it is fixed there.

The Problem starts in 'PerforceCheckOutCommand':


{{public static Commandline createCommandLine( PerforceScmProviderRepository repo, File workingDirectory,
                                                           ScmVersion version, String specname )
{
 Commandline command = PerforceScmProvider.createP4Command( repo, workingDirectory );
 {color.red}
 command.createArgument().setValue( "-c" + specname );{color}
 command.createArgument().setValue( "sync" );
 
 // Use a simple heuristic to determine if we should use the Force flag
 // on sync. Forcing sync is a HUGE performance hit but is required in
 // rare instances where source is somehow deleted. If the target
 // directory is completely empty, assume a force is required. If
 // not empty, we assume a previous checkout was already done and a normal
 // sync will suffice.
 // SCM-110
 String[] files = workingDirectory.list();
 if ( files == null || files.length == 0 )
 { 
  // We need to force so checkout to an empty directory will work. command.createArgument().setValue( "-f" ); }
  // Not sure what to do here. I'm unclear whether we should be
  // sync'ing each file individually to the label or just sync the
  // entire contents of the workingDir. I'm going to assume the
  // latter until the exact semantics are clearer.
  if ( version != null && StringUtils.isNotEmpty( version.getName() ) )
   { command.createArgument().setValue( "@" + version.getName() ); }
 }

}}

The {{specname}} contains the backslashes and is these are neither escaped nor quoted! Hmm ... Is that a job that the CommandLine should handle? I think so!

The next thing I will do is to file an issue at plexus-utils and link the issues.


> Syncing with Perforce on Linux/Unix/Bash fails
> ----------------------------------------------
>
>                 Key: CONTINUUM-1402
>                 URL: http://jira.codehaus.org/browse/CONTINUUM-1402
>             Project: Continuum
>          Issue Type: Bug
>          Components: Integration - Maven 2, SCM
>    Affects Versions: 1.1-beta-2
>         Environment: Bash
>            Reporter: Sebastian Annies
>            Priority: Critical
>
> When a client is created it is named:
> E.g.{{monospaced}} sannies-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\6{{monospaced}}
> that is ok, but now comes the sync command and uses following commandline
> {{monospaced}}
> /bin/bash -c "p4 -d /opt/continuum-1.1-beta-3-SNAPSHOT/apps/continuum/webapp/WEB-INF/working-directory/1 -cbackground-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\1 sync"
> {{monospaced}}
> The Bash now removes the backslashes in the client name! The result is that the client is not existent and perforce returns with an error. 
> I think continuum does everything allright but we need the ticket here to be reminded to switch to a new plexus-utils or maven-scm if it is fixed there. 
> The Problem starts in 'PerforceCheckOutCommand':
> {{monospaced}}
>     public static Commandline createCommandLine( PerforceScmProviderRepository repo, File workingDirectory,
>                                                  ScmVersion version, String specname )
>     {
>         Commandline command = PerforceScmProvider.createP4Command( repo, workingDirectory );
> {color:red} 
>         command.createArgument().setValue( "-c" + specname  );
> {color}
>         command.createArgument().setValue( "sync" );
>         // Use a simple heuristic to determine if we should use the Force flag
>         // on sync.  Forcing sync is a HUGE performance hit but is required in
>         // rare instances where source is somehow deleted.  If the target
>         // directory is completely empty, assume a force is required.  If
>         // not empty, we assume a previous checkout was already done and a normal
>         // sync will suffice.
>         // SCM-110
>         String[] files = workingDirectory.list();
>         if ( files == null || files.length == 0 )
>         {
>             // We need to force so checkout to an empty directory will work.
>             command.createArgument().setValue( "-f" );
>         }
>         // Not sure what to do here. I'm unclear whether we should be
>         // sync'ing each file individually to the label or just sync the
>         // entire contents of the workingDir. I'm going to assume the
>         // latter until the exact semantics are clearer.
>         if ( version != null && StringUtils.isNotEmpty( version.getName() ) )
>         {
>             command.createArgument().setValue( "@" + version.getName() );
>         }
>         return command;
> {{monospaced}}
> The {{monospaced}}specname  {{monospaced}} contains the backslashes and is these are neither escaped nor quoted! Hmm ... Is that a job that the CommandLine should handle? I think so!
> The next thing I will do is to file an issue at plexus-utils and link the issues.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] Issue Comment Edited: (CONTINUUM-1402) Syncing with Perforce on Linux/Unix/Bash fails

Posted by "Sebastian Annies (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/CONTINUUM-1402?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_105305 ] 

Sebastian Annies edited comment on CONTINUUM-1402 at 8/21/07 10:16 AM:
-----------------------------------------------------------------------

MORE READABLE HERE:

When a client is created it is named:

E.g. {{sannies-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\6}}

that is ok, but now comes the sync command and uses following commandline

{{/bin/bash c "p4 -d /opt/continuum-1.1-beta-3-SNAPSHOT/apps/continuum/webapp/WEB-INF/working-directory/1 -cbackground-sojus-MavenSCM\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\1 sync"}}

The Bash now removes the backslashes in the client name! The result is that the client is not existent and perforce returns with an error.

I think continuum does everything allright but we need the ticket here to be reminded to switch to a new plexus-utils or maven-scm if it is fixed there.

The Problem starts in 'PerforceCheckOutCommand':


{quote}public static Commandline createCommandLine( PerforceScmProviderRepository repo, File workingDirectory,
                                                           ScmVersion version, String specname )
{
 Commandline command = PerforceScmProvider.createP4Command( repo, workingDirectory );
 {color:red}command.createArgument().setValue( "-c" + specname );{color}
 command.createArgument().setValue( "sync" );
 
 // Use a simple heuristic to determine if we should use the Force flag
 // on sync. Forcing sync is a HUGE performance hit but is required in
 // rare instances where source is somehow deleted. If the target
 // directory is completely empty, assume a force is required. If
 // not empty, we assume a previous checkout was already done and a normal
 // sync will suffice.
 // SCM-110
 String[] files = workingDirectory.list();
 if ( files == null || files.length == 0 )
 \{ 
  // We need to force so checkout to an empty directory will work.   
  command.createArgument().setValue( "-f" ); 
 \}
  // Not sure what to do here. I'm unclear whether we should be
  // sync'ing each file individually to the label or just sync the
  // entire contents of the workingDir. I'm going to assume the
  // latter until the exact semantics are clearer.
  if ( version != null && StringUtils.isNotEmpty( version.getName() ) )  \{ 
     command.createArgument().setValue( "@" + version.getName() ); 
 \}
 }

{quote}

The {{specname}} contains the backslashes and is these are neither escaped nor quoted! Hmm ... Is that a job that the CommandLine should handle? I think so!

The next thing I will do is to file an issue at plexus-utils and link the issues.



 was:
MORE READABLE HERE:

When a client is created it is named:

E.g. {{sannies-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\6}}

that is ok, but now comes the sync command and uses following commandline

{{/bin/bash c "p4 -d /opt/continuum-1.1-beta-3-SNAPSHOT/apps/continuum/webapp/WEB-INF/working-directory/1 -cbackground-sojus-MavenSCM\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\1 sync"}}

The Bash now removes the backslashes in the client name! The result is that the client is not existent and perforce returns with an error.

I think continuum does everything allright but we need the ticket here to be reminded to switch to a new plexus-utils or maven-scm if it is fixed there.

The Problem starts in 'PerforceCheckOutCommand':


{quote}public static Commandline createCommandLine( PerforceScmProviderRepository repo, File workingDirectory,
                                                           ScmVersion version, String specname )
{
 Commandline command = PerforceScmProvider.createP4Command( repo, workingDirectory );
 {color:red}command.createArgument().setValue( "-c" + specname );{color}
 command.createArgument().setValue( "sync" );
 
 // Use a simple heuristic to determine if we should use the Force flag
 // on sync. Forcing sync is a HUGE performance hit but is required in
 // rare instances where source is somehow deleted. If the target
 // directory is completely empty, assume a force is required. If
 // not empty, we assume a previous checkout was already done and a normal
 // sync will suffice.
 // SCM-110
 String[] files = workingDirectory.list();
 if ( files == null || files.length == 0 )
 { 
  // We need to force so checkout to an empty directory will work. command.createArgument().setValue( "-f" ); }
  // Not sure what to do here. I'm unclear whether we should be
  // sync'ing each file individually to the label or just sync the
  // entire contents of the workingDir. I'm going to assume the
  // latter until the exact semantics are clearer.
  if ( version != null && StringUtils.isNotEmpty( version.getName() ) )
   \{ command.createArgument().setValue( "@" + version.getName() ); \}
 }

{quote}

The {{specname}} contains the backslashes and is these are neither escaped nor quoted! Hmm ... Is that a job that the CommandLine should handle? I think so!

The next thing I will do is to file an issue at plexus-utils and link the issues.


> Syncing with Perforce on Linux/Unix/Bash fails
> ----------------------------------------------
>
>                 Key: CONTINUUM-1402
>                 URL: http://jira.codehaus.org/browse/CONTINUUM-1402
>             Project: Continuum
>          Issue Type: Bug
>          Components: Integration - Maven 2, SCM
>    Affects Versions: 1.1-beta-2
>         Environment: Bash
>            Reporter: Sebastian Annies
>            Priority: Critical
>
> When a client is created it is named:
> E.g.{{monospaced}} sannies-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\6{{monospaced}}
> that is ok, but now comes the sync command and uses following commandline
> {{monospaced}}
> /bin/bash -c "p4 -d /opt/continuum-1.1-beta-3-SNAPSHOT/apps/continuum/webapp/WEB-INF/working-directory/1 -cbackground-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\1 sync"
> {{monospaced}}
> The Bash now removes the backslashes in the client name! The result is that the client is not existent and perforce returns with an error. 
> I think continuum does everything allright but we need the ticket here to be reminded to switch to a new plexus-utils or maven-scm if it is fixed there. 
> The Problem starts in 'PerforceCheckOutCommand':
> {{monospaced}}
>     public static Commandline createCommandLine( PerforceScmProviderRepository repo, File workingDirectory,
>                                                  ScmVersion version, String specname )
>     {
>         Commandline command = PerforceScmProvider.createP4Command( repo, workingDirectory );
> {color:red} 
>         command.createArgument().setValue( "-c" + specname  );
> {color}
>         command.createArgument().setValue( "sync" );
>         // Use a simple heuristic to determine if we should use the Force flag
>         // on sync.  Forcing sync is a HUGE performance hit but is required in
>         // rare instances where source is somehow deleted.  If the target
>         // directory is completely empty, assume a force is required.  If
>         // not empty, we assume a previous checkout was already done and a normal
>         // sync will suffice.
>         // SCM-110
>         String[] files = workingDirectory.list();
>         if ( files == null || files.length == 0 )
>         {
>             // We need to force so checkout to an empty directory will work.
>             command.createArgument().setValue( "-f" );
>         }
>         // Not sure what to do here. I'm unclear whether we should be
>         // sync'ing each file individually to the label or just sync the
>         // entire contents of the workingDir. I'm going to assume the
>         // latter until the exact semantics are clearer.
>         if ( version != null && StringUtils.isNotEmpty( version.getName() ) )
>         {
>             command.createArgument().setValue( "@" + version.getName() );
>         }
>         return command;
> {{monospaced}}
> The {{monospaced}}specname  {{monospaced}} contains the backslashes and is these are neither escaped nor quoted! Hmm ... Is that a job that the CommandLine should handle? I think so!
> The next thing I will do is to file an issue at plexus-utils and link the issues.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] Issue Comment Edited: (CONTINUUM-1402) Syncing with Perforce on Linux/Unix/Bash fails

Posted by "Matthias Wurm (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/CONTINUUM-1402?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_106308 ] 

Matthias Wurm edited comment on CONTINUUM-1402 at 9/3/07 1:02 PM:
------------------------------------------------------------------

I guess there is a problem with backslashes in the command:

After setting loglevel to debug I've seen that maven-scm wants to do the following:

2007-09-03 19:55:35,908 [pool-1-thread-1] DEBUG ScmManager:default             - Executing: /bin/bash --c "p4 -d /data/local/continuum-1.1-beta-2/apps/continuum/webapp/WEB-INF/working-directory/3 -p perforce.e.secunet.de:1666 -chostname-MavenSCM-\data\local\continuum-1.1-beta-2\apps\continuum\webapp\WEB-INF\working-directory\3 sync -f"

Executing the command manually on my console removes the backslashes, hence the command fails
Client 'hostname-MavenSCM-datalocalcontinuum-1.1-beta-2appscontinuumwebappWEB-INFworking-directory2' unknown - use 'client' command to create it.

Setting the clientspec inside single quotes like this works on the console:
/bin/bash -c "p4 -d /data/local/continuum-1.1-beta-2/apps/continuum/webapp/WEB-INF/working-directory/3 -p perforce.e.secunet.de:1666 -c'hostname-MavenSCM-\data\local\continuum-1.1-beta-2\apps\continuum\webapp\WEB-INF\working-directory\3' sync -f"

Maybe changing the maven-scm-provider to add single quotes around the clientspec name might fix this issue.


 was:
I guess there is a problem with backslashes in the command:

After setting loglevel to debug I've seen that maven-scm wants to do the following:

2007-09-03 19:55:35,908 [pool-1-thread-1] DEBUG ScmManager:default             - Executing: /bin/bash -c "p4 -d /data/local/continuum-1.1-beta-2/apps/continuum/webapp/WEB-INF/working-directory/3 -p perforce.e.secunet.de:1666 -chostname-MavenSCM-\data\local\continuum-1.1-beta-2\apps\continuum\webapp\WEB-INF\working-directory\3 sync -f"

Executing the command manually on my console removes the backslashes, hence the command fails
Client 'hostname-MavenSCM-datalocalcontinuum-1.1-beta-2appscontinuumwebappWEB-INFworking-directory2' unknown - use 'client' command to create it.

Setting the clientspec inside single quotes like this works on the console:
/bin/bash -c "p4 -d /data/local/continuum-1.1-beta-2/apps/continuum/webapp/WEB-INF/working-directory/3 -p perforce.e.secunet.de:1666 -c'hostname-MavenSCM-\data\local\continuum-1.1-beta-2\apps\continuum\webapp\WEB-INF\working-directory\3' sync -f"

Maybe changing the maven-scm-provider to add single quotes around the clientspec name might fix this issue.

> Syncing with Perforce on Linux/Unix/Bash fails
> ----------------------------------------------
>
>                 Key: CONTINUUM-1402
>                 URL: http://jira.codehaus.org/browse/CONTINUUM-1402
>             Project: Continuum
>          Issue Type: Bug
>          Components: Integration - Maven 2, SCM
>    Affects Versions: 1.1-beta-2
>         Environment: Bash
>            Reporter: Sebastian Annies
>            Priority: Critical
>
> When a client is created it is named:
> E.g.{{monospaced}} sannies-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\6{{monospaced}}
> that is ok, but now comes the sync command and uses following commandline
> {{monospaced}}
> /bin/bash -c "p4 -d /opt/continuum-1.1-beta-3-SNAPSHOT/apps/continuum/webapp/WEB-INF/working-directory/1 -cbackground-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\1 sync"
> {{monospaced}}
> The Bash now removes the backslashes in the client name! The result is that the client is not existent and perforce returns with an error. 
> I think continuum does everything allright but we need the ticket here to be reminded to switch to a new plexus-utils or maven-scm if it is fixed there. 
> The Problem starts in 'PerforceCheckOutCommand':
> {{monospaced}}
>     public static Commandline createCommandLine( PerforceScmProviderRepository repo, File workingDirectory,
>                                                  ScmVersion version, String specname )
>     {
>         Commandline command = PerforceScmProvider.createP4Command( repo, workingDirectory );
> {color:red} 
>         command.createArgument().setValue( "-c" + specname  );
> {color}
>         command.createArgument().setValue( "sync" );
>         // Use a simple heuristic to determine if we should use the Force flag
>         // on sync.  Forcing sync is a HUGE performance hit but is required in
>         // rare instances where source is somehow deleted.  If the target
>         // directory is completely empty, assume a force is required.  If
>         // not empty, we assume a previous checkout was already done and a normal
>         // sync will suffice.
>         // SCM-110
>         String[] files = workingDirectory.list();
>         if ( files == null || files.length == 0 )
>         {
>             // We need to force so checkout to an empty directory will work.
>             command.createArgument().setValue( "-f" );
>         }
>         // Not sure what to do here. I'm unclear whether we should be
>         // sync'ing each file individually to the label or just sync the
>         // entire contents of the workingDir. I'm going to assume the
>         // latter until the exact semantics are clearer.
>         if ( version != null && StringUtils.isNotEmpty( version.getName() ) )
>         {
>             command.createArgument().setValue( "@" + version.getName() );
>         }
>         return command;
> {{monospaced}}
> The {{monospaced}}specname  {{monospaced}} contains the backslashes and is these are neither escaped nor quoted! Hmm ... Is that a job that the CommandLine should handle? I think so!
> The next thing I will do is to file an issue at plexus-utils and link the issues.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] Commented: (CONTINUUM-1402) Syncing with Perforce on Linux/Unix/Bash fails

Posted by "Matthias Wurm (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/CONTINUUM-1402?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_109974 ] 

Matthias Wurm commented on CONTINUUM-1402:
------------------------------------------

I'll have a look at the maven-scm-provider-perforce hopefully until tomorrow and file the issue...

> Syncing with Perforce on Linux/Unix/Bash fails
> ----------------------------------------------
>
>                 Key: CONTINUUM-1402
>                 URL: http://jira.codehaus.org/browse/CONTINUUM-1402
>             Project: Continuum
>          Issue Type: Bug
>          Components: Integration - Maven 2, SCM
>    Affects Versions: 1.1-beta-2
>         Environment: Bash
>            Reporter: Sebastian Annies
>            Priority: Critical
>
> When a client is created it is named:
> E.g.{{monospaced}} sannies-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\6{{monospaced}}
> that is ok, but now comes the sync command and uses following commandline
> {{monospaced}}
> /bin/bash -c "p4 -d /opt/continuum-1.1-beta-3-SNAPSHOT/apps/continuum/webapp/WEB-INF/working-directory/1 -cbackground-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\1 sync"
> {{monospaced}}
> The Bash now removes the backslashes in the client name! The result is that the client is not existent and perforce returns with an error. 
> I think continuum does everything allright but we need the ticket here to be reminded to switch to a new plexus-utils or maven-scm if it is fixed there. 
> The Problem starts in 'PerforceCheckOutCommand':
> {{monospaced}}
>     public static Commandline createCommandLine( PerforceScmProviderRepository repo, File workingDirectory,
>                                                  ScmVersion version, String specname )
>     {
>         Commandline command = PerforceScmProvider.createP4Command( repo, workingDirectory );
> {color:red} 
>         command.createArgument().setValue( "-c" + specname  );
> {color}
>         command.createArgument().setValue( "sync" );
>         // Use a simple heuristic to determine if we should use the Force flag
>         // on sync.  Forcing sync is a HUGE performance hit but is required in
>         // rare instances where source is somehow deleted.  If the target
>         // directory is completely empty, assume a force is required.  If
>         // not empty, we assume a previous checkout was already done and a normal
>         // sync will suffice.
>         // SCM-110
>         String[] files = workingDirectory.list();
>         if ( files == null || files.length == 0 )
>         {
>             // We need to force so checkout to an empty directory will work.
>             command.createArgument().setValue( "-f" );
>         }
>         // Not sure what to do here. I'm unclear whether we should be
>         // sync'ing each file individually to the label or just sync the
>         // entire contents of the workingDir. I'm going to assume the
>         // latter until the exact semantics are clearer.
>         if ( version != null && StringUtils.isNotEmpty( version.getName() ) )
>         {
>             command.createArgument().setValue( "@" + version.getName() );
>         }
>         return command;
> {{monospaced}}
> The {{monospaced}}specname  {{monospaced}} contains the backslashes and is these are neither escaped nor quoted! Hmm ... Is that a job that the CommandLine should handle? I think so!
> The next thing I will do is to file an issue at plexus-utils and link the issues.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] Commented: (CONTINUUM-1402) Syncing with Perforce on Linux/Unix/Bash fails

Posted by "Sebastian Annies (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/CONTINUUM-1402?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_106309 ] 

Sebastian Annies commented on CONTINUUM-1402:
---------------------------------------------

I will provide a plexus-utils fix in the next days (perhaps I can even get this done today)

> Syncing with Perforce on Linux/Unix/Bash fails
> ----------------------------------------------
>
>                 Key: CONTINUUM-1402
>                 URL: http://jira.codehaus.org/browse/CONTINUUM-1402
>             Project: Continuum
>          Issue Type: Bug
>          Components: Integration - Maven 2, SCM
>    Affects Versions: 1.1-beta-2
>         Environment: Bash
>            Reporter: Sebastian Annies
>            Priority: Critical
>
> When a client is created it is named:
> E.g.{{monospaced}} sannies-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\6{{monospaced}}
> that is ok, but now comes the sync command and uses following commandline
> {{monospaced}}
> /bin/bash -c "p4 -d /opt/continuum-1.1-beta-3-SNAPSHOT/apps/continuum/webapp/WEB-INF/working-directory/1 -cbackground-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\1 sync"
> {{monospaced}}
> The Bash now removes the backslashes in the client name! The result is that the client is not existent and perforce returns with an error. 
> I think continuum does everything allright but we need the ticket here to be reminded to switch to a new plexus-utils or maven-scm if it is fixed there. 
> The Problem starts in 'PerforceCheckOutCommand':
> {{monospaced}}
>     public static Commandline createCommandLine( PerforceScmProviderRepository repo, File workingDirectory,
>                                                  ScmVersion version, String specname )
>     {
>         Commandline command = PerforceScmProvider.createP4Command( repo, workingDirectory );
> {color:red} 
>         command.createArgument().setValue( "-c" + specname  );
> {color}
>         command.createArgument().setValue( "sync" );
>         // Use a simple heuristic to determine if we should use the Force flag
>         // on sync.  Forcing sync is a HUGE performance hit but is required in
>         // rare instances where source is somehow deleted.  If the target
>         // directory is completely empty, assume a force is required.  If
>         // not empty, we assume a previous checkout was already done and a normal
>         // sync will suffice.
>         // SCM-110
>         String[] files = workingDirectory.list();
>         if ( files == null || files.length == 0 )
>         {
>             // We need to force so checkout to an empty directory will work.
>             command.createArgument().setValue( "-f" );
>         }
>         // Not sure what to do here. I'm unclear whether we should be
>         // sync'ing each file individually to the label or just sync the
>         // entire contents of the workingDir. I'm going to assume the
>         // latter until the exact semantics are clearer.
>         if ( version != null && StringUtils.isNotEmpty( version.getName() ) )
>         {
>             command.createArgument().setValue( "@" + version.getName() );
>         }
>         return command;
> {{monospaced}}
> The {{monospaced}}specname  {{monospaced}} contains the backslashes and is these are neither escaped nor quoted! Hmm ... Is that a job that the CommandLine should handle? I think so!
> The next thing I will do is to file an issue at plexus-utils and link the issues.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] Issue Comment Edited: (CONTINUUM-1402) Syncing with Perforce on Linux/Unix/Bash fails

Posted by "Sebastian Annies (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/CONTINUUM-1402?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_105305 ] 

Sebastian Annies edited comment on CONTINUUM-1402 at 8/21/07 10:15 AM:
-----------------------------------------------------------------------

MORE READABLE HERE:

When a client is created it is named:

E.g. {{sannies-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\6}}

that is ok, but now comes the sync command and uses following commandline

{{/bin/bash c "p4 -d /opt/continuum-1.1-beta-3-SNAPSHOT/apps/continuum/webapp/WEB-INF/working-directory/1 -cbackground-sojus-MavenSCM\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\1 sync"}}

The Bash now removes the backslashes in the client name! The result is that the client is not existent and perforce returns with an error.

I think continuum does everything allright but we need the ticket here to be reminded to switch to a new plexus-utils or maven-scm if it is fixed there.

The Problem starts in 'PerforceCheckOutCommand':


{quote}public static Commandline createCommandLine( PerforceScmProviderRepository repo, File workingDirectory,
                                                           ScmVersion version, String specname )
{
 Commandline command = PerforceScmProvider.createP4Command( repo, workingDirectory );
 {color:red}command.createArgument().setValue( "-c" + specname );{color}
 command.createArgument().setValue( "sync" );
 
 // Use a simple heuristic to determine if we should use the Force flag
 // on sync. Forcing sync is a HUGE performance hit but is required in
 // rare instances where source is somehow deleted. If the target
 // directory is completely empty, assume a force is required. If
 // not empty, we assume a previous checkout was already done and a normal
 // sync will suffice.
 // SCM-110
 String[] files = workingDirectory.list();
 if ( files == null || files.length == 0 )
 { 
  // We need to force so checkout to an empty directory will work. command.createArgument().setValue( "-f" ); }
  // Not sure what to do here. I'm unclear whether we should be
  // sync'ing each file individually to the label or just sync the
  // entire contents of the workingDir. I'm going to assume the
  // latter until the exact semantics are clearer.
  if ( version != null && StringUtils.isNotEmpty( version.getName() ) )
   \{ command.createArgument().setValue( "@" + version.getName() ); \}
 }

{quote}

The {{specname}} contains the backslashes and is these are neither escaped nor quoted! Hmm ... Is that a job that the CommandLine should handle? I think so!

The next thing I will do is to file an issue at plexus-utils and link the issues.



 was:
MORE READABLE HERE:

When a client is created it is named:

E.g. {{sannies-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\6}}

that is ok, but now comes the sync command and uses following commandline

{{/bin/bash c "p4 -d /opt/continuum-1.1-beta-3-SNAPSHOT/apps/continuum/webapp/WEB-INF/working-directory/1 -cbackground-sojus-MavenSCM\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\1 sync"}}

The Bash now removes the backslashes in the client name! The result is that the client is not existent and perforce returns with an error.

I think continuum does everything allright but we need the ticket here to be reminded to switch to a new plexus-utils or maven-scm if it is fixed there.

The Problem starts in 'PerforceCheckOutCommand':


{quote}public static Commandline createCommandLine( PerforceScmProviderRepository repo, File workingDirectory,
                                                           ScmVersion version, String specname )
{
 Commandline command = PerforceScmProvider.createP4Command( repo, workingDirectory );
 {color:red}command.createArgument().setValue( "-c" + specname );{color}
 command.createArgument().setValue( "sync" );
 
 // Use a simple heuristic to determine if we should use the Force flag
 // on sync. Forcing sync is a HUGE performance hit but is required in
 // rare instances where source is somehow deleted. If the target
 // directory is completely empty, assume a force is required. If
 // not empty, we assume a previous checkout was already done and a normal
 // sync will suffice.
 // SCM-110
 String[] files = workingDirectory.list();
 if ( files == null || files.length == 0 )
 { 
  // We need to force so checkout to an empty directory will work. command.createArgument().setValue( "-f" ); }
  // Not sure what to do here. I'm unclear whether we should be
  // sync'ing each file individually to the label or just sync the
  // entire contents of the workingDir. I'm going to assume the
  // latter until the exact semantics are clearer.
  if ( version != null && StringUtils.isNotEmpty( version.getName() ) )
   { command.createArgument().setValue( "@" + version.getName() ); }
 }

{quote}

The {{specname}} contains the backslashes and is these are neither escaped nor quoted! Hmm ... Is that a job that the CommandLine should handle? I think so!

The next thing I will do is to file an issue at plexus-utils and link the issues.


> Syncing with Perforce on Linux/Unix/Bash fails
> ----------------------------------------------
>
>                 Key: CONTINUUM-1402
>                 URL: http://jira.codehaus.org/browse/CONTINUUM-1402
>             Project: Continuum
>          Issue Type: Bug
>          Components: Integration - Maven 2, SCM
>    Affects Versions: 1.1-beta-2
>         Environment: Bash
>            Reporter: Sebastian Annies
>            Priority: Critical
>
> When a client is created it is named:
> E.g.{{monospaced}} sannies-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\6{{monospaced}}
> that is ok, but now comes the sync command and uses following commandline
> {{monospaced}}
> /bin/bash -c "p4 -d /opt/continuum-1.1-beta-3-SNAPSHOT/apps/continuum/webapp/WEB-INF/working-directory/1 -cbackground-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\1 sync"
> {{monospaced}}
> The Bash now removes the backslashes in the client name! The result is that the client is not existent and perforce returns with an error. 
> I think continuum does everything allright but we need the ticket here to be reminded to switch to a new plexus-utils or maven-scm if it is fixed there. 
> The Problem starts in 'PerforceCheckOutCommand':
> {{monospaced}}
>     public static Commandline createCommandLine( PerforceScmProviderRepository repo, File workingDirectory,
>                                                  ScmVersion version, String specname )
>     {
>         Commandline command = PerforceScmProvider.createP4Command( repo, workingDirectory );
> {color:red} 
>         command.createArgument().setValue( "-c" + specname  );
> {color}
>         command.createArgument().setValue( "sync" );
>         // Use a simple heuristic to determine if we should use the Force flag
>         // on sync.  Forcing sync is a HUGE performance hit but is required in
>         // rare instances where source is somehow deleted.  If the target
>         // directory is completely empty, assume a force is required.  If
>         // not empty, we assume a previous checkout was already done and a normal
>         // sync will suffice.
>         // SCM-110
>         String[] files = workingDirectory.list();
>         if ( files == null || files.length == 0 )
>         {
>             // We need to force so checkout to an empty directory will work.
>             command.createArgument().setValue( "-f" );
>         }
>         // Not sure what to do here. I'm unclear whether we should be
>         // sync'ing each file individually to the label or just sync the
>         // entire contents of the workingDir. I'm going to assume the
>         // latter until the exact semantics are clearer.
>         if ( version != null && StringUtils.isNotEmpty( version.getName() ) )
>         {
>             command.createArgument().setValue( "@" + version.getName() );
>         }
>         return command;
> {{monospaced}}
> The {{monospaced}}specname  {{monospaced}} contains the backslashes and is these are neither escaped nor quoted! Hmm ... Is that a job that the CommandLine should handle? I think so!
> The next thing I will do is to file an issue at plexus-utils and link the issues.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] Commented: (CONTINUUM-1402) Syncing with Perforce on Linux/Unix/Bash fails

Posted by "Sebastian Annies (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/CONTINUUM-1402?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_115890 ] 

Sebastian Annies commented on CONTINUUM-1402:
---------------------------------------------

No Workaround for me: I got 45 modules. 

> Syncing with Perforce on Linux/Unix/Bash fails
> ----------------------------------------------
>
>                 Key: CONTINUUM-1402
>                 URL: http://jira.codehaus.org/browse/CONTINUUM-1402
>             Project: Continuum
>          Issue Type: Bug
>          Components: Integration - Maven 2, SCM
>    Affects Versions: 1.1-beta-2
>         Environment: Bash
>            Reporter: Sebastian Annies
>            Priority: Critical
>
> When a client is created it is named:
> E.g.{{monospaced}} sannies-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\6{{monospaced}}
> that is ok, but now comes the sync command and uses following commandline
> {{monospaced}}
> /bin/bash -c "p4 -d /opt/continuum-1.1-beta-3-SNAPSHOT/apps/continuum/webapp/WEB-INF/working-directory/1 -cbackground-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\1 sync"
> {{monospaced}}
> The Bash now removes the backslashes in the client name! The result is that the client is not existent and perforce returns with an error. 
> I think continuum does everything allright but we need the ticket here to be reminded to switch to a new plexus-utils or maven-scm if it is fixed there. 
> The Problem starts in 'PerforceCheckOutCommand':
> {{monospaced}}
>     public static Commandline createCommandLine( PerforceScmProviderRepository repo, File workingDirectory,
>                                                  ScmVersion version, String specname )
>     {
>         Commandline command = PerforceScmProvider.createP4Command( repo, workingDirectory );
> {color:red} 
>         command.createArgument().setValue( "-c" + specname  );
> {color}
>         command.createArgument().setValue( "sync" );
>         // Use a simple heuristic to determine if we should use the Force flag
>         // on sync.  Forcing sync is a HUGE performance hit but is required in
>         // rare instances where source is somehow deleted.  If the target
>         // directory is completely empty, assume a force is required.  If
>         // not empty, we assume a previous checkout was already done and a normal
>         // sync will suffice.
>         // SCM-110
>         String[] files = workingDirectory.list();
>         if ( files == null || files.length == 0 )
>         {
>             // We need to force so checkout to an empty directory will work.
>             command.createArgument().setValue( "-f" );
>         }
>         // Not sure what to do here. I'm unclear whether we should be
>         // sync'ing each file individually to the label or just sync the
>         // entire contents of the workingDir. I'm going to assume the
>         // latter until the exact semantics are clearer.
>         if ( version != null && StringUtils.isNotEmpty( version.getName() ) )
>         {
>             command.createArgument().setValue( "@" + version.getName() );
>         }
>         return command;
> {{monospaced}}
> The {{monospaced}}specname  {{monospaced}} contains the backslashes and is these are neither escaped nor quoted! Hmm ... Is that a job that the CommandLine should handle? I think so!
> The next thing I will do is to file an issue at plexus-utils and link the issues.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] Issue Comment Edited: (CONTINUUM-1402) Syncing with Perforce on Linux/Unix/Bash fails

Posted by "Matthias Wurm (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/CONTINUUM-1402?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_109966 ] 

Matthias Wurm edited comment on CONTINUUM-1402 at 10/15/07 9:22 AM:
--------------------------------------------------------------------

Single quotes in the p4 command is indeed a problem under windows. I just tried that out under XP:


{{p4 -c 'myclientspec' sync -n}}
Result:
{{Client ''myclientspec'' unknown - use 'client' command to create it.}}

The quick fix would be to avoid characters that are used as escape characters in identifiers and replace the path separators with a different symbol (like an underscore) to generate the client spec name.
What about backwards compatibility here? 


 was:
Single quotes in the p4 command is indeed a problem under windows. I just tried that out under XP:

{{monospaced}}
p4 -c 'myclientspec' sync -n
{{monospaced}}
Result:
Client ''myclientspec'' unknown - use 'client' command to create it.

The quick fix would be to avoid characters that are used as escape characters in identifiers and replace the path separators with a different symbol (like an underscore) to generate the client spec name.
What about backwards compatibility here? 

> Syncing with Perforce on Linux/Unix/Bash fails
> ----------------------------------------------
>
>                 Key: CONTINUUM-1402
>                 URL: http://jira.codehaus.org/browse/CONTINUUM-1402
>             Project: Continuum
>          Issue Type: Bug
>          Components: Integration - Maven 2, SCM
>    Affects Versions: 1.1-beta-2
>         Environment: Bash
>            Reporter: Sebastian Annies
>            Priority: Critical
>
> When a client is created it is named:
> E.g.{{monospaced}} sannies-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\6{{monospaced}}
> that is ok, but now comes the sync command and uses following commandline
> {{monospaced}}
> /bin/bash -c "p4 -d /opt/continuum-1.1-beta-3-SNAPSHOT/apps/continuum/webapp/WEB-INF/working-directory/1 -cbackground-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\1 sync"
> {{monospaced}}
> The Bash now removes the backslashes in the client name! The result is that the client is not existent and perforce returns with an error. 
> I think continuum does everything allright but we need the ticket here to be reminded to switch to a new plexus-utils or maven-scm if it is fixed there. 
> The Problem starts in 'PerforceCheckOutCommand':
> {{monospaced}}
>     public static Commandline createCommandLine( PerforceScmProviderRepository repo, File workingDirectory,
>                                                  ScmVersion version, String specname )
>     {
>         Commandline command = PerforceScmProvider.createP4Command( repo, workingDirectory );
> {color:red} 
>         command.createArgument().setValue( "-c" + specname  );
> {color}
>         command.createArgument().setValue( "sync" );
>         // Use a simple heuristic to determine if we should use the Force flag
>         // on sync.  Forcing sync is a HUGE performance hit but is required in
>         // rare instances where source is somehow deleted.  If the target
>         // directory is completely empty, assume a force is required.  If
>         // not empty, we assume a previous checkout was already done and a normal
>         // sync will suffice.
>         // SCM-110
>         String[] files = workingDirectory.list();
>         if ( files == null || files.length == 0 )
>         {
>             // We need to force so checkout to an empty directory will work.
>             command.createArgument().setValue( "-f" );
>         }
>         // Not sure what to do here. I'm unclear whether we should be
>         // sync'ing each file individually to the label or just sync the
>         // entire contents of the workingDir. I'm going to assume the
>         // latter until the exact semantics are clearer.
>         if ( version != null && StringUtils.isNotEmpty( version.getName() ) )
>         {
>             command.createArgument().setValue( "@" + version.getName() );
>         }
>         return command;
> {{monospaced}}
> The {{monospaced}}specname  {{monospaced}} contains the backslashes and is these are neither escaped nor quoted! Hmm ... Is that a job that the CommandLine should handle? I think so!
> The next thing I will do is to file an issue at plexus-utils and link the issues.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] Commented: (CONTINUUM-1402) Syncing with Perforce on Linux/Unix/Bash fails

Posted by "Matthias Wurm (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/CONTINUUM-1402?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_109966 ] 

Matthias Wurm commented on CONTINUUM-1402:
------------------------------------------

Single quotes in the p4 command is indeed a problem under windows. I just tried that out under XP:

p4 -c 'myclientspec' sync -n
Result:
Client ''myclientspec'' unknown - use 'client' command to create it.

The quick fix would be to avoid characters that are used as escape characters in identifiers and replace the path separators with a different symbol (like an underscore) to generate the client spec name.
What about backwards compatibility here? 

> Syncing with Perforce on Linux/Unix/Bash fails
> ----------------------------------------------
>
>                 Key: CONTINUUM-1402
>                 URL: http://jira.codehaus.org/browse/CONTINUUM-1402
>             Project: Continuum
>          Issue Type: Bug
>          Components: Integration - Maven 2, SCM
>    Affects Versions: 1.1-beta-2
>         Environment: Bash
>            Reporter: Sebastian Annies
>            Priority: Critical
>
> When a client is created it is named:
> E.g.{{monospaced}} sannies-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\6{{monospaced}}
> that is ok, but now comes the sync command and uses following commandline
> {{monospaced}}
> /bin/bash -c "p4 -d /opt/continuum-1.1-beta-3-SNAPSHOT/apps/continuum/webapp/WEB-INF/working-directory/1 -cbackground-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\1 sync"
> {{monospaced}}
> The Bash now removes the backslashes in the client name! The result is that the client is not existent and perforce returns with an error. 
> I think continuum does everything allright but we need the ticket here to be reminded to switch to a new plexus-utils or maven-scm if it is fixed there. 
> The Problem starts in 'PerforceCheckOutCommand':
> {{monospaced}}
>     public static Commandline createCommandLine( PerforceScmProviderRepository repo, File workingDirectory,
>                                                  ScmVersion version, String specname )
>     {
>         Commandline command = PerforceScmProvider.createP4Command( repo, workingDirectory );
> {color:red} 
>         command.createArgument().setValue( "-c" + specname  );
> {color}
>         command.createArgument().setValue( "sync" );
>         // Use a simple heuristic to determine if we should use the Force flag
>         // on sync.  Forcing sync is a HUGE performance hit but is required in
>         // rare instances where source is somehow deleted.  If the target
>         // directory is completely empty, assume a force is required.  If
>         // not empty, we assume a previous checkout was already done and a normal
>         // sync will suffice.
>         // SCM-110
>         String[] files = workingDirectory.list();
>         if ( files == null || files.length == 0 )
>         {
>             // We need to force so checkout to an empty directory will work.
>             command.createArgument().setValue( "-f" );
>         }
>         // Not sure what to do here. I'm unclear whether we should be
>         // sync'ing each file individually to the label or just sync the
>         // entire contents of the workingDir. I'm going to assume the
>         // latter until the exact semantics are clearer.
>         if ( version != null && StringUtils.isNotEmpty( version.getName() ) )
>         {
>             command.createArgument().setValue( "@" + version.getName() );
>         }
>         return command;
> {{monospaced}}
> The {{monospaced}}specname  {{monospaced}} contains the backslashes and is these are neither escaped nor quoted! Hmm ... Is that a job that the CommandLine should handle? I think so!
> The next thing I will do is to file an issue at plexus-utils and link the issues.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] Issue Comment Edited: (CONTINUUM-1402) Syncing with Perforce on Linux/Unix/Bash fails

Posted by "Sebastian Annies (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/CONTINUUM-1402?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_106601 ] 

Sebastian Annies edited comment on CONTINUUM-1402 at 9/5/07 4:40 PM:
---------------------------------------------------------------------

Can someone concerned please have a look into PLXUTILS-44 and comment my comment? I just don't know how to fix that correctly! Any hints? 

Concerning single quotes: 
If the maven-scm provider adds the single quotes - what about windows then?


 was:
Can someone concerned please have a look into PLXUTILS-44 and comment my comment? I just don't know how to fix that correctly! Any hints? 

> Syncing with Perforce on Linux/Unix/Bash fails
> ----------------------------------------------
>
>                 Key: CONTINUUM-1402
>                 URL: http://jira.codehaus.org/browse/CONTINUUM-1402
>             Project: Continuum
>          Issue Type: Bug
>          Components: Integration - Maven 2, SCM
>    Affects Versions: 1.1-beta-2
>         Environment: Bash
>            Reporter: Sebastian Annies
>            Priority: Critical
>
> When a client is created it is named:
> E.g.{{monospaced}} sannies-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\6{{monospaced}}
> that is ok, but now comes the sync command and uses following commandline
> {{monospaced}}
> /bin/bash -c "p4 -d /opt/continuum-1.1-beta-3-SNAPSHOT/apps/continuum/webapp/WEB-INF/working-directory/1 -cbackground-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\1 sync"
> {{monospaced}}
> The Bash now removes the backslashes in the client name! The result is that the client is not existent and perforce returns with an error. 
> I think continuum does everything allright but we need the ticket here to be reminded to switch to a new plexus-utils or maven-scm if it is fixed there. 
> The Problem starts in 'PerforceCheckOutCommand':
> {{monospaced}}
>     public static Commandline createCommandLine( PerforceScmProviderRepository repo, File workingDirectory,
>                                                  ScmVersion version, String specname )
>     {
>         Commandline command = PerforceScmProvider.createP4Command( repo, workingDirectory );
> {color:red} 
>         command.createArgument().setValue( "-c" + specname  );
> {color}
>         command.createArgument().setValue( "sync" );
>         // Use a simple heuristic to determine if we should use the Force flag
>         // on sync.  Forcing sync is a HUGE performance hit but is required in
>         // rare instances where source is somehow deleted.  If the target
>         // directory is completely empty, assume a force is required.  If
>         // not empty, we assume a previous checkout was already done and a normal
>         // sync will suffice.
>         // SCM-110
>         String[] files = workingDirectory.list();
>         if ( files == null || files.length == 0 )
>         {
>             // We need to force so checkout to an empty directory will work.
>             command.createArgument().setValue( "-f" );
>         }
>         // Not sure what to do here. I'm unclear whether we should be
>         // sync'ing each file individually to the label or just sync the
>         // entire contents of the workingDir. I'm going to assume the
>         // latter until the exact semantics are clearer.
>         if ( version != null && StringUtils.isNotEmpty( version.getName() ) )
>         {
>             command.createArgument().setValue( "@" + version.getName() );
>         }
>         return command;
> {{monospaced}}
> The {{monospaced}}specname  {{monospaced}} contains the backslashes and is these are neither escaped nor quoted! Hmm ... Is that a job that the CommandLine should handle? I think so!
> The next thing I will do is to file an issue at plexus-utils and link the issues.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] Issue Comment Edited: (CONTINUUM-1402) Syncing with Perforce on Linux/Unix/Bash fails

Posted by "Sebastian Annies (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/CONTINUUM-1402?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_105305 ] 

Sebastian Annies edited comment on CONTINUUM-1402 at 8/21/07 7:39 AM:
----------------------------------------------------------------------

MORE READABLE HERE:

When a client is created it is named:

E.g. {{sannies-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\6}}

that is ok, but now comes the sync command and uses following commandline

{{/bin/bash c "p4 -d /opt/continuum-1.1-beta-3-SNAPSHOT/apps/continuum/webapp/WEB-INF/working-directory/1 -cbackground-sojus-MavenSCM\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\1 sync"}}

The Bash now removes the backslashes in the client name! The result is that the client is not existent and perforce returns with an error.

I think continuum does everything allright but we need the ticket here to be reminded to switch to a new plexus-utils or maven-scm if it is fixed there.

The Problem starts in 'PerforceCheckOutCommand':


{{public static Commandline createCommandLine( PerforceScmProviderRepository repo, File workingDirectory,
                                                           ScmVersion version, String specname )
{
 Commandline command = PerforceScmProvider.createP4Command( repo, workingDirectory );
 {color.red}
 command.createArgument().setValue( "-c" + specname );{color}
 command.createArgument().setValue( "sync" );
 
 // Use a simple heuristic to determine if we should use the Force flag
 // on sync. Forcing sync is a HUGE performance hit but is required in
 // rare instances where source is somehow deleted. If the target
 // directory is completely empty, assume a force is required. If
 // not empty, we assume a previous checkout was already done and a normal
 // sync will suffice.
 // SCM-110
 String[] files = workingDirectory.list();
 if ( files == null || files.length == 0 )
 { 
  // We need to force so checkout to an empty directory will work. command.createArgument().setValue( "-f" ); }
  // Not sure what to do here. I'm unclear whether we should be
  // sync'ing each file individually to the label or just sync the
  // entire contents of the workingDir. I'm going to assume the
  // latter until the exact semantics are clearer.
  if ( version != null && StringUtils.isNotEmpty( version.getName() ) )
   { command.createArgument().setValue( "@" + version.getName() ); }
 }

}}

The {{specname}} contains the backslashes and is these are neither escaped nor quoted! Hmm ... Is that a job that the CommandLine should handle? I think so!

The next thing I will do is to file an issue at plexus-utils and link the issues.



 was:
MORE READABLE HERE:

When a client is created it is named:

E.g. {{sannies-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\6}}

that is ok, but now comes the sync command and uses following commandline

{{/bin/bash c "p4 -d /opt/continuum-1.1-beta-3-SNAPSHOT/apps/continuum/webapp/WEB-INF/working-directory/1 -cbackground-sojus-MavenSCM\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\1 sync"}}

The Bash now removes the backslashes in the client name! The result is that the client is not existent and perforce returns with an error.

I think continuum does everything allright but we need the ticket here to be reminded to switch to a new plexus-utils or maven-scm if it is fixed there.

The Problem starts in 'PerforceCheckOutCommand':


{{
public static Commandline createCommandLine( PerforceScmProviderRepository repo, File workingDirectory,
                                                           ScmVersion version, String specname )
{
 Commandline command = PerforceScmProvider.createP4Command( repo, workingDirectory );
 {color.red}
 command.createArgument().setValue( "-c" + specname );{color}
 command.createArgument().setValue( "sync" );
 
 // Use a simple heuristic to determine if we should use the Force flag
 // on sync. Forcing sync is a HUGE performance hit but is required in
 // rare instances where source is somehow deleted. If the target
 // directory is completely empty, assume a force is required. If
 // not empty, we assume a previous checkout was already done and a normal
 // sync will suffice.
 // SCM-110
 String[] files = workingDirectory.list();
 if ( files == null || files.length == 0 )
 { 
  // We need to force so checkout to an empty directory will work. command.createArgument().setValue( "-f" ); }
  // Not sure what to do here. I'm unclear whether we should be
  // sync'ing each file individually to the label or just sync the
  // entire contents of the workingDir. I'm going to assume the
  // latter until the exact semantics are clearer.
  if ( version != null && StringUtils.isNotEmpty( version.getName() ) )
   { command.createArgument().setValue( "@" + version.getName() ); }
 }

}}

The {{specname }} contains the backslashes and is these are neither escaped nor quoted! Hmm ... Is that a job that the CommandLine should handle? I think so!

The next thing I will do is to file an issue at plexus-utils and link the issues.


> Syncing with Perforce on Linux/Unix/Bash fails
> ----------------------------------------------
>
>                 Key: CONTINUUM-1402
>                 URL: http://jira.codehaus.org/browse/CONTINUUM-1402
>             Project: Continuum
>          Issue Type: Bug
>          Components: Integration - Maven 2, SCM
>    Affects Versions: 1.1-beta-2
>         Environment: Bash
>            Reporter: Sebastian Annies
>            Priority: Critical
>
> When a client is created it is named:
> E.g.{{monospaced}} sannies-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\6{{monospaced}}
> that is ok, but now comes the sync command and uses following commandline
> {{monospaced}}
> /bin/bash -c "p4 -d /opt/continuum-1.1-beta-3-SNAPSHOT/apps/continuum/webapp/WEB-INF/working-directory/1 -cbackground-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\1 sync"
> {{monospaced}}
> The Bash now removes the backslashes in the client name! The result is that the client is not existent and perforce returns with an error. 
> I think continuum does everything allright but we need the ticket here to be reminded to switch to a new plexus-utils or maven-scm if it is fixed there. 
> The Problem starts in 'PerforceCheckOutCommand':
> {{monospaced}}
>     public static Commandline createCommandLine( PerforceScmProviderRepository repo, File workingDirectory,
>                                                  ScmVersion version, String specname )
>     {
>         Commandline command = PerforceScmProvider.createP4Command( repo, workingDirectory );
> {color:red} 
>         command.createArgument().setValue( "-c" + specname  );
> {color}
>         command.createArgument().setValue( "sync" );
>         // Use a simple heuristic to determine if we should use the Force flag
>         // on sync.  Forcing sync is a HUGE performance hit but is required in
>         // rare instances where source is somehow deleted.  If the target
>         // directory is completely empty, assume a force is required.  If
>         // not empty, we assume a previous checkout was already done and a normal
>         // sync will suffice.
>         // SCM-110
>         String[] files = workingDirectory.list();
>         if ( files == null || files.length == 0 )
>         {
>             // We need to force so checkout to an empty directory will work.
>             command.createArgument().setValue( "-f" );
>         }
>         // Not sure what to do here. I'm unclear whether we should be
>         // sync'ing each file individually to the label or just sync the
>         // entire contents of the workingDir. I'm going to assume the
>         // latter until the exact semantics are clearer.
>         if ( version != null && StringUtils.isNotEmpty( version.getName() ) )
>         {
>             command.createArgument().setValue( "@" + version.getName() );
>         }
>         return command;
> {{monospaced}}
> The {{monospaced}}specname  {{monospaced}} contains the backslashes and is these are neither escaped nor quoted! Hmm ... Is that a job that the CommandLine should handle? I think so!
> The next thing I will do is to file an issue at plexus-utils and link the issues.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] Issue Comment Edited: (CONTINUUM-1402) Syncing with Perforce on Linux/Unix/Bash fails

Posted by "Matthias Wurm (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/CONTINUUM-1402?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_109966 ] 

Matthias Wurm edited comment on CONTINUUM-1402 at 10/15/07 9:22 AM:
--------------------------------------------------------------------

Single quotes in the p4 command is indeed a problem under windows. I just tried that out under XP:

{{monospaced}}
p4 -c 'myclientspec' sync -n
{{monospaced}}
Result:
Client ''myclientspec'' unknown - use 'client' command to create it.

The quick fix would be to avoid characters that are used as escape characters in identifiers and replace the path separators with a different symbol (like an underscore) to generate the client spec name.
What about backwards compatibility here? 


 was:
Single quotes in the p4 command is indeed a problem under windows. I just tried that out under XP:

p4 -c 'myclientspec' sync -n
Result:
Client ''myclientspec'' unknown - use 'client' command to create it.

The quick fix would be to avoid characters that are used as escape characters in identifiers and replace the path separators with a different symbol (like an underscore) to generate the client spec name.
What about backwards compatibility here? 

> Syncing with Perforce on Linux/Unix/Bash fails
> ----------------------------------------------
>
>                 Key: CONTINUUM-1402
>                 URL: http://jira.codehaus.org/browse/CONTINUUM-1402
>             Project: Continuum
>          Issue Type: Bug
>          Components: Integration - Maven 2, SCM
>    Affects Versions: 1.1-beta-2
>         Environment: Bash
>            Reporter: Sebastian Annies
>            Priority: Critical
>
> When a client is created it is named:
> E.g.{{monospaced}} sannies-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\6{{monospaced}}
> that is ok, but now comes the sync command and uses following commandline
> {{monospaced}}
> /bin/bash -c "p4 -d /opt/continuum-1.1-beta-3-SNAPSHOT/apps/continuum/webapp/WEB-INF/working-directory/1 -cbackground-sojus-MavenSCM-\opt\continuum-1.1-beta-3-SNAPSHOT\apps\continuum\webapp\WEB-INF\working-directory\1 sync"
> {{monospaced}}
> The Bash now removes the backslashes in the client name! The result is that the client is not existent and perforce returns with an error. 
> I think continuum does everything allright but we need the ticket here to be reminded to switch to a new plexus-utils or maven-scm if it is fixed there. 
> The Problem starts in 'PerforceCheckOutCommand':
> {{monospaced}}
>     public static Commandline createCommandLine( PerforceScmProviderRepository repo, File workingDirectory,
>                                                  ScmVersion version, String specname )
>     {
>         Commandline command = PerforceScmProvider.createP4Command( repo, workingDirectory );
> {color:red} 
>         command.createArgument().setValue( "-c" + specname  );
> {color}
>         command.createArgument().setValue( "sync" );
>         // Use a simple heuristic to determine if we should use the Force flag
>         // on sync.  Forcing sync is a HUGE performance hit but is required in
>         // rare instances where source is somehow deleted.  If the target
>         // directory is completely empty, assume a force is required.  If
>         // not empty, we assume a previous checkout was already done and a normal
>         // sync will suffice.
>         // SCM-110
>         String[] files = workingDirectory.list();
>         if ( files == null || files.length == 0 )
>         {
>             // We need to force so checkout to an empty directory will work.
>             command.createArgument().setValue( "-f" );
>         }
>         // Not sure what to do here. I'm unclear whether we should be
>         // sync'ing each file individually to the label or just sync the
>         // entire contents of the workingDir. I'm going to assume the
>         // latter until the exact semantics are clearer.
>         if ( version != null && StringUtils.isNotEmpty( version.getName() ) )
>         {
>             command.createArgument().setValue( "@" + version.getName() );
>         }
>         return command;
> {{monospaced}}
> The {{monospaced}}specname  {{monospaced}} contains the backslashes and is these are neither escaped nor quoted! Hmm ... Is that a job that the CommandLine should handle? I think so!
> The next thing I will do is to file an issue at plexus-utils and link the issues.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira