[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [pdt-dev] Advice for SFTP deployment / synchronization

Ah, I see what you're saying. In that case I'd do the same thing, but first execute svn status and pipe the second set of fields (i.e. everything that has been modified) to a temp file. That would result in a file that I could pass to rsync with the --files-from argument.

I'd probably just put the whole thing in a shell script and have Ant execute that at this point, rather than trying to try to write the set of commands as an Ant job.

Apologies if this one seems even more complex. :) I'm an ex-Unix admin and a total script junkie, so this sort of thing is always the first solution that occurs to me.


Jean-NoÃl Rivasseau wrote:
Ha ha, good point. I was actually using rsync via an Ant task too before, exactly the way you specified (I am on Linux btw so no need for cygwin, although however some of the programmers in my team are on Windows, thus installing cygwin would be an additional burden).

The reason why rsync is not ideal is that it will sync your whole local directory, not just the changes you made to the svn base. Thus, it will happilly override any changes that your team mates may have just done - and that they may currently be testing !!!

So the only solution would be to create an Ant file set or such, so that you would pick only the files that you modified. But this is starting to be complex, would probably involve some Ant SVN manipulation to know which file you modified since your last SVN update, etc... so this is probably not trivial.

If you have a simple solution, please tell me though.


On 6/7/07, Andy Schmitt < andy.schmitt@xxxxxxxxxxxxxxxxxxxxx> wrote:

I don't know of a plugin for this, but why don't you use rsync with Cygwin? It's fast and it covers everything you mentioned below. Then you can avoid the whole SFTP thing. We used Cygwin with Ant tasks in both my current job and the last one I was at.

Basically, you get Cygwin (at http://www.cygwin.com) with rsync and ssh. You put in an Ant task that runs rsync, which synchronizes to the web server via SSH. SFTP is just a shell around SSH anyway. Now the programmer can just double-click the Ant task any time he deploys and the output from that goes to the console view so he can verify that the copy worked correctly. Something like this maybe:

ÂÂÂ <target name="deploy">
ÂÂÂ ÂÂÂ <exec executable="c:/cygwin/bin/rsync">
ÂÂÂ ÂÂÂ ÂÂÂ <arg value="-e"/>
ÂÂÂ ÂÂÂ ÂÂÂ <arg value="c:/cygwin/bin/ssh"/>
ÂÂÂ ÂÂÂ ÂÂÂ <arg value="-a"/>
ÂÂÂ ÂÂÂ ÂÂÂ <arg value="--exclude=.svn"/>
ÂÂÂ ÂÂÂ ÂÂÂ <arg value="${srcdir}"/>
ÂÂÂ ÂÂÂ ÂÂÂ <arg value="testuser@${hostname}:${destpath}"/>
ÂÂÂ ÂÂÂ </exec>
ÂÂÂ </target>

For this you'd put ${destpath} as your destination on the server, ${hostname} as the server host, and ${srcdir} as the top-level directory of your code distro. You'd also need to set testuser as not requiring a password on your server, or supply the password with an rsync environment variable.

Believe me, Cygwin is your best friend when working with Eclipse on Windows, because it can automate a lot of very tedious work. I know it's complicated, especially if you're not used to Unix, but all the work is in the setup; after that, you start saving massive amounts of time. Most specialized things I do with Eclipse are done via Ant tasks that call Cygwin.

Of course, if you're on Unix, you can do the same thing without even needing Cygwin. :)

Andy Schmitt
Parthenon Software Group

Jean-NoÃl Rivasseau wrote:

Some time ago there was a discussion about SFTP support in Eclipse. So maybe someone in this list knows the answer to my problem.

I am looking for a plugin or feature that would help me achieve the following (simple) problems in Eclipse.

We are a small teams of programmers using Eclipse to code a web application in PHP. Our basic workflow is the following:

* Programmer A works on a feature / fixes bugs, editing files on his own local environment;

* When he has finished, he needs to upload his changes to our (common) Apache web server to test;

* He then goes back to the editing cycle, and he loops through editing/uploading to server/testing until the implementation is complete;

* Then he commits its changes to our source control system, Subversion.

* Other programmers in the team do the same and occasionally update their code through SVN.

Currently, the problem happens in phase 2, when uploading changes to the web server. Subversion support in Eclipse is perfect through Subclipse. However, I have not found a satisfactory solution that would allow me to synchronize files with the web server via SFTP. Currently I am manually uploading the files with an SFTP client, which is a very unsatisfactory solution!

I've currently tried the following solutions (plugins):

* Aptana plugin. This allows you to edit files directly on the test server via SFTP. This is not what is needed, because the test server contents can be modified by any programmer at any time and is not considered a safe place, your changes can be overriden at any time. Besides, the updated files on the server would have to be downloaded back into the local environment to be commited to SVN.
Aptana also has a synchronization feature which is useful and works well, but is not possible in our case since it works by brute force: it scans the entire contents of the server and is thus very slow (only usable daily or so). We need something smarter, eg, once the initial syncrhonization is done it remembers the files locally modified and will only synchronize these ones.

* Target Management/ Remote System Explorer: As far as I understood this plugin does not allow synchronization at all. It only allows you to edit files directly on the server like Aptana.

* FTP / WebDAV support plugin (with Jcraft additional SFTP support): this plugin seems old / unmaintained but this is currently the one that seems the best. It allows you to synchronize (via the general team sync framework) and remember local changes thereafter. However it lacks two critical things to be really usable:
- possibility to exclude certain files from the synchronization (it works with file patterns though, like *.svn, but not individual files which is important)
- possibility to synchronize one project with different servers (strangely, one project can be only associated with one deployment !!...)

If anybody can help me or point me to relevant plugins, I'd be really grateful. This problem is hindering our development process in a really bad way. For the information I am running Eclipse 3.2.2 under Linux. I intend to upgrade to 3.3 as soon as I can, and will install/try any plugin that will help me resolve my problem (only open source plugins though).


ps: I've looked a little bit onto the WTP features, but this really seems targeted at JEE development, and we are doing PHP dev. For example on the servers definition there are only servlet containers (Tomcat, Websphere etc), so I am not sure if this can help me at all

_______________________________________________ pdt-dev mailing list pdt-dev@xxxxxxxxxxx https://dev.eclipse.org/mailman/listinfo/pdt-dev

pdt-dev mailing list

_______________________________________________ pdt-dev mailing list pdt-dev@xxxxxxxxxxx https://dev.eclipse.org/mailman/listinfo/pdt-dev