f



Publish to live site from Subversion

I�ve been using Subversion for a while to maintain the PHP web apps and 
sites I develop in my Windows box. But when I want to publish a new 
release I update the live site manually and I want to improve this process.

I can�t simply export to a fresh directory and upload all files because 
that won�t handle renames and deletions (and the upload will take 
forever anyway). I typically use WinMerge to find out what files changed 
but there�re some drawbacks:

* It can�t compare files through FTP (and if it could, I guess it�d need 
to download the whole site every time) so I need to maintain a local 
copy of the live site and upload files manually.

* It can�t use the repository information so it won�t ignore 
non-versioned items (settings, uploads, caches, data�) unless I maintain 
a separate filter duplicating the svn:ignore data.

I could keep my current method and write a bunch of Subversion hook 
scripts in PHP (I�m not proficient in any other language available) to 
keep the data in synch but I looks like a overwhelming effort that can 
easily break. So I wonder how is everyone else doing it. But according 
to my googling the answer is: writing lots of custom scripts!

Is it the only way? Is there a tool to help with this common task? Can 
Apache Ant be used for this? How do *you* do it?



-- 
-- http://alvaro.es - �lvaro G. Vicario - Burgos, Spain
-- Mi sitio sobre programaci�n web: http://bits.demogracia.com
-- Mi web de humor al ba�o Mar�a: http://www.demogracia.com
--
0
11/13/2008 11:11:11 AM
comp.lang.php 32646 articles. 0 followers. Post Follow

9 Replies
556 Views

Similar Articles

[PageSpeed] 55

�lvaro G. Vicario wrote:
> I�ve been using Subversion for a while to maintain the PHP web apps and 
> sites I develop in my Windows box. But when I want to publish a new 
> release I update the live site manually and I want to improve this process.
> 
> I can�t simply export to a fresh directory and upload all files because 
> that won�t handle renames and deletions (and the upload will take 
> forever anyway). I typically use WinMerge to find out what files changed 
> but there�re some drawbacks:
> 
> * It can�t compare files through FTP (and if it could, I guess it�d need 
> to download the whole site every time) so I need to maintain a local 
> copy of the live site and upload files manually.
> 
> * It can�t use the repository information so it won�t ignore 
> non-versioned items (settings, uploads, caches, data�) unless I maintain 
> a separate filter duplicating the svn:ignore data.
> 
> I could keep my current method and write a bunch of Subversion hook 
> scripts in PHP (I�m not proficient in any other language available) to 
> keep the data in synch but I looks like a overwhelming effort that can 
> easily break. So I wonder how is everyone else doing it. But according 
> to my googling the answer is: writing lots of custom scripts!
> 
> Is it the only way? Is there a tool to help with this common task? Can 
> Apache Ant be used for this? How do *you* do it?
> 
> 
> 

I use svn or cvs here (depending on the project).  I just keep a 
development system then use one of the many FTP programs which compares 
file date/time (ie. WinSCP, FileZilla, CoreFTP).

-- 
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================
0
jstucklex (14659)
11/13/2008 11:45:53 AM
On Nov 13, 6:11=A0am, "=C1lvaro G. Vicario"
<alvaroNOSPAMTHA...@demogracia.com> wrote:
> I=92ve been using Subversion for a while to maintain the PHP web apps and
> sites I develop in my Windows box. But when I want to publish a new
> release I update the live site manually and I want to improve this proces=
s.
>
> I can=92t simply export to a fresh directory and upload all files because
> that won=92t handle renames and deletions (and the upload will take
> forever anyway). I typically use WinMerge to find out what files changed
> but there=92re some drawbacks:
>
> * It can=92t compare files through FTP (and if it could, I guess it=92d n=
eed
> to download the whole site every time) so I need to maintain a local
> copy of the live site and upload files manually.
>
> * It can=92t use the repository information so it won=92t ignore
> non-versioned items (settings, uploads, caches, data=85) unless I maintai=
n
> a separate filter duplicating the svn:ignore data.
>
> I could keep my current method and write a bunch of Subversion hook
> scripts in PHP (I=92m not proficient in any other language available) to
> keep the data in synch but I looks like a overwhelming effort that can
> easily break. So I wonder how is everyone else doing it. But according
> to my googling the answer is: writing lots of custom scripts!
>
> Is it the only way? Is there a tool to help with this common task? Can
> Apache Ant be used for this? How do *you* do it?
>
> --
> --http://alvaro.es- =C1lvaro G. Vicario - Burgos, Spain
> -- Mi sitio sobre programaci=F3n web:http://bits.demogracia.com
> -- Mi web de humor al ba=F1o Mar=EDa:http://www.demogracia.com
> --

What I've been doing is to determine where the document root is on my
hosting (eg domain.com/html, public_html, whatever) and make that into
a symlink pointing to a different directory where the site lives.
Then when I have an update to do, I export the version I want to
upload, tarball it up, upload it to my hosting, expand it, and then
delete the old symlink and create a new on pointing to the new
directory.  If you do both operations at the same time it's very
nearly atomic (eg rm html;ln -s versionNumber.html html).
Occasionally you'll run into a situation that requires you copy some
files from the 'old' directory and overwrite something in the 'new'
directory (such as image files that your users have uploaded,
etc.  .htaccess and .htpasswd may also enter into the mix.  It stays
largely clean, however.

This generally requires access to the command line of the server, and
not all hosting allows you to SSH into a shared server.  (Nexcess.net
does, I'm working with them on a project currently.)

There's more than one way to skin this cat.  rsync (if available)
would provide another solution, as well.
0
zburnham (35)
11/13/2008 9:58:19 PM
> I�ve been using Subversion for a while to maintain the PHP web apps and
> sites I develop in my Windows box. But when I want to publish a new
> release I update the live site manually and I want to improve this process.
> 
> I can�t simply export to a fresh directory and upload all files because
> that won�t handle renames and deletions (and the upload will take
> forever anyway). I typically use WinMerge ...

Why? Why don't you just do an "svn update" on the web server? Failing
that (because subversion is not installed, for example), you could try
to mount the site directory somehow to your computer and use the
subversion installation on your local PC to do the update.

But it really is much easier to install the subversion client on the web
server.

You might find this useful:
http://www.howtoforge.com/set-up-a-modular-svn-repository-for-php-websites

Best regards,
-- 
Willem Bogaerts

Application smith
Kratz B.V.
http://www.kratz.nl/
0
Willem
11/14/2008 9:41:10 AM
Willem Bogaerts escribi�:
>> I�ve been using Subversion for a while to maintain the PHP web apps
>> and sites I develop in my Windows box. But when I want to publish a
>> new release I update the live site manually and I want to improve
>> this process.
>> 
>> I can�t simply export to a fresh directory and upload all files
>> because that won�t handle renames and deletions (and the upload
>> will take forever anyway). I typically use WinMerge ...
> 
> Why? Why don't you just do an "svn update" on the web server?

It's an idea I hadn't thought about. If the live site is a working copy
of a special branch (let's say, branches/live) all I need to do is
merging the desired changes into branches/live and then updating the
working copy. Apache can be configured quite easily to prevent access to
..svn directories.

The only hassle is that I need to open my repositories to the outer 
world. And, of course, a hosting service with Subversion client is not 
always at your reach (where I live, customers seem to adore the 
overpriced poor quality hosting offered by well known local brands).

> Failing that (because subversion is not installed, for example), you
> could try to mount the site directory somehow to your computer and
> use the subversion installation on your local PC to do the update.

I recall having tried Windows' "Network Places" to mount an FTP site but 
I discarded it because it was pretty useless (it would not allow command 
line, drive mapping or shell extensions). But perhaps there's a 
third-party tool I could use.

Thank you for your suggestions.


-- 
-- http://alvaro.es - �lvaro G. Vicario - Burgos, Spain
-- Mi sitio sobre programaci�n web: http://bits.demogracia.com
-- Mi web de humor al ba�o Mar�a: http://www.demogracia.com
--
0
11/14/2008 10:40:05 AM
Jerry Stuckle escribi�:
> �lvaro G. Vicario wrote:
>> I�ve been using Subversion for a while to maintain the PHP web apps 
>> and sites I develop in my Windows box. But when I want to publish a 
>> new release I update the live site manually and I want to improve this 
>> process.
[...]
> I use svn or cvs here (depending on the project).  I just keep a 
> development system then use one of the many FTP programs which compares 
> file date/time (ie. WinSCP, FileZilla, CoreFTP).

The idea is feasible (Subversion keeps the original file dates) but all 
FTP clients I've tried along the years are terrible at the task of 
syncing trees. (Note to self: eval SyncBack again.) But I still need to 
duplicate the handling of non-versioned items.

Thank you for the tip.

-- 
-- http://alvaro.es - �lvaro G. Vicario - Burgos, Spain
-- Mi sitio sobre programaci�n web: http://bits.demogracia.com
-- Mi web de humor al ba�o Mar�a: http://www.demogracia.com
--

0
11/14/2008 10:52:39 AM
"Álvaro G. Vicario" wrote:

> The only hassle is that I need to open my repositories to the outer
> world.

As long as you're configuring apache properly, you'll open *only* the
subdirectories you want, not the enrite SVN tree.

Or am I missing something there?

-- 
----------------------------------
Iván Sánchez Ortega -ivan-algarroba-sanchezortega-punto-es-

----------(8-) el hombre con el rabin de la boina m s largu del mundo
0
UTF
11/14/2008 11:04:08 AM
> The only hassle is that I need to open my repositories to the outer
> world.

You can restrict access to a limited set of known IP addresses.

> I recall having tried Windows' "Network Places" to mount an FTP site but
> I discarded it because it was pretty useless (it would not allow command
> line, drive mapping or shell extensions). But perhaps there's a
> third-party tool I could use.

If you do a net search for "mount sshfs windows", you will probably find
some 3rd-party tools.

Best regards,
-- 
Willem Bogaerts

Application smith
Kratz B.V.
http://www.kratz.nl/
0
Willem
11/14/2008 12:09:51 PM
Iv�n S�nchez Ortega escribi�:
> "Álvaro G. Vicario" wrote:
>> The only hassle is that I need to open my repositories to the outer
>> world.
> 
> As long as you're configuring apache properly, you'll open *only* the
> subdirectories you want, not the enrite SVN tree.
> 
> Or am I missing something there?

What I meant is that, currently, all my repositories are limited to the 
local network (or even with no network at all). To access them from the 
internet I'd need to forward a port in the router and double-check 
Apache configuration. Which is doable, but not done. If you're to allow 
outsiders into your room you need to make sure your drawers are properly 
locked.

-- 
-- http://alvaro.es - �lvaro G. Vicario - Burgos, Spain
-- Mi sitio sobre programaci�n web: http://bits.demogracia.com
-- Mi web de humor al ba�o Mar�a: http://www.demogracia.com
--
0
11/14/2008 12:47:36 PM
"Álvaro G. Vicario" wrote:

> What I meant is that, currently, all my repositories are limited to the
> local network (or even with no network at all). To access them from the
> internet I'd need to forward a port in the router and double-check
> Apache configuration. Which is doable, but not done.

You could use either port-based virtualhosts, or .htaccess and an IP filter.

-- 
----------------------------------
Iván Sánchez Ortega -ivan-algarroba-sanchezortega-punto-es-

XML is like violence. If it doesn't solve the problem, use more.
                                      -- Fjolnir, on Slashdot
0
UTF
11/14/2008 1:10:00 PM
Reply: