Details
-
Type:
Bug
-
Status:
Open
-
Priority:
Minor
-
Resolution: Unresolved
-
Affects Version/s: 1.0
-
Fix Version/s: None
-
Component/s: wagon-ssh-external
-
Labels:None
-
Environment:Maven 3.0.3
maven-site-plugin:3.0-beta-3
-
Testcase included:yes
-
Patch Submitted:Yes
-
Number of attachments :
Description
Similiar to the request captured in this issue (https://jira.codehaus.org/browse/MSITE-250), my problem is that our target area gets out of sync when we upload our site generated content frequently using CI. When files are moved/deleted, our site deployment target area becomes a hassle to keep correct because when noticed, we have to manually delete either old files, or the entire folder (because it's easier
) prior to deploying the site. I'd like it if the wagon-scp code could remove the files/subfolders in the target area prior to uploading.
I looked at the code, and a easy fix, which I tested, is to update the ScpHelper.putDirectory() method (in wagon-ssh-common) to remove the contents of the folder prior to uploading/unzipping the new files:
...
try
{
executor.executeCommand( "cd " + path + "; rm -rf * ");
wagon.put( zipFile, getPath( destDir, zipFile.getName() ) );
executor.executeCommand( "cd " + path + "; unzip -q -o " + zipFile.getName() + "; rm -f " + zipFile.getName() );
zipFile.delete();
...
I have attached the version of the file which I updated and tested, and below is what the output looks like with my simple test project.
Password for dev@localhost: XXXXXX
scp://localhost/tmp/site-deploy - Session: Opened
Executing command: mkdir -p /tmp/site-deploy/.
Executing command: cd /tmp/site-deploy/.; rm -rf *
Executing command: mkdir -p /tmp/site-deploy/.
Executing command: scp -t "/tmp/site-deploy/./wagon3163598898345372687.zip"
Uploading: ./wagon3163598898345372687.zip to scp://localhost/tmp/site-deploy
Issue Links
- is related to
-
MSITE-250
Allow cleaning of the remote area or staging site
-
This is incredibly dangerous, and harder to support on other providers. I'd think if you need this, it needs to at least require some configuration rather than being the default.
Would it make more sense to have a wagon.deleteDirectory command that can be used by plugins and clients that need it?