Deploying Committed Changes to a Remote Server

Recently, we received the following question through Twitter: “What is the easiest way to deploy the changes of your last commit(s) to a remote project?”

Let’s explore our options!

This functionality is available in IntelliJ Idea, PyCharm, WebStorm, PhpStorm, and RubyMine.

Configuring a Remote Host

Working with a Remote Host is a broad topic of its own. To add a remote host, select Tools | Deployment | Configuration and provide the necessary details to connect to the remote host. This can be an FTP, FTPS or SFTP server as well as a local or remote folder. In this blog post we’ll use a remote server as a host which is accessed through FTP.

On the Mappings tab, we can also specify how the local and remote folder structure compare to each other. For example, we can map the local project root to a different content folder on the server.

Once finished, Tools | Deployment | Browse Remote Host will reveal the remote file browser. We can Drag & Drop files between the current project and the server and make use of synchronization.

Uploading files on commit

Let’s return to the initial question: how to deploy to this server when committing files to a VCS? Once a VCS system, whether Git, Mercurial, Subversion or another is registered for our project, we can make a change to our code and press Ctrl+K (Cmd+K on Mac OS X) to commit changes.

The Commit Changes dialog provides us with the option to upload files to a remote server after a successful commit. There is also a checkbox available which will automatically perform the upload after every commit.

Considerations

The automatic upload process for a commit only transfers the current changeset’s files to the remote host. All preceding commits will be ignored by this process.

For a single developer, this workflow is ideal. After doing an initial synchronization between the current project and the remote server, every commit will be sent to the remote host (as long as it’s committed through PhpStorm).

In a team, not every developer is always working on the latest version of the VCS repository. If every developer uploads only their last commit to the remote host, chances are some files deployed will not be the latest ones and several commits will never make it to the server.

It is important for teams to do the deployment using a standardized flow, preferably automated. This can be done using a Continuous Integration (CI) server, TeamCity for example, which fetches the latest commit, runs PHPUnit and deploys it to the target machine.

Let us hear your thoughts in the issue tracker, through the comments below or in our forums!

Develop with pleasure!
– JetBrains PhpStorm Team

This entry was posted in Cool Feature and tagged , , , , , . Bookmark the permalink.
  • William

    i built a php page that goes a git pull.. all my projects get a /update to them.. so whenever i push changes to github it calls the url (using web hooks there)

    i used to use the above way of pushing changes but ftp is just sad now a days with all the brute forces going on

  • Andrey

    it would be nice to add ability to upload files to commit, from log history of changes. Right now i can’t upload interested file from log history :(

    • ad_on_is

      +1

    • Jeroen

      +1 Indeed! That would be very useful. Also the option to select multiple commits and with an added “Deploy” function to the context-menu.

    • Valeo

      +1

    • John

      +1

  • ad_on_is

    oh found it out…
    in changes-tab select all files that you want to deploy and hit tools->deployment->deploy to…

    • Igor

      Thanks! Just what I needed.

    • http://handysolver.com Rahul

      Thanks a lot! You saved me lots of time !! :D

  • Pingback: PHPStorm – Git a FTP deployment na jednom místě | Ondřej Hudeček – blog

  • Pingback: FTP deployment with PHPStorm | Houdas Blog

  • Pingback: WordPress hosting, the easy way, with Flywheel | philsmart.me