Before I ask this I realize the answer is going to be different for everyone, but I think that the majority of magento pro's will have some amount of common ground on this.

What is the ideal workflow for magento development using an IDE and SVN?

Up to this point I have been using sublimeText and manually uploading files into the working copy, then once tested, I commit. We are now starting to use PHPstorm with SVN integrated, but the problem I see is how do you test code without committing? If you commit a change and it doesn't work then what? Revert?

  • The question on everyone's mind: why SVN and not Git? – benmarks Feb 21 '15 at 15:00
  • I have no idea, I'm just a dev so I have no say in what we use. – Alex Chastain Feb 23 '15 at 19:47
  • 2
    "I'm just a dev so I have no say in what we use" - that seems terribly unfortunate :-( – benmarks Feb 23 '15 at 19:49

As you yourself already said, this is different for every developer/company. I can tell you what the set up is that we're using at my company.

  • We are also using PHPstorm as IDE (with Magicento plugin) and we are using GIT instead of SVN.
  • We all have a local work station with Ubuntu and running all projects on our local machine.
  • We all have forked the project's repositories and make branches for every task we perform. We are committing our changes directly after testing on our local environment.
  • Then we will create a pull request (using Atlassian Stash) which will be reviewed by another developer. After that it will be merged into the main repository.

I have used SVN before, but I cannot recall if a workflow like this is possible in SVN.

  • That's basically what I was thinking as well, but how do you manage all the databases since they're not held in git/svn? Does each workstation run their own database? What if you're working with code that needs to run a query to work? Now you have a disconnect between the dev db and production. – Alex Chastain Feb 20 '15 at 22:14
  • @AlexChastain, your comment holds a complete new question. Questions like this have already been asked, so check these one to see if you can find your answer there: magento.stackexchange.com/questions/9835/… and magento.stackexchange.com/questions/252/… – 7ochem Feb 23 '15 at 8:11

I hope not to get downvoted because I can't comment, but I wouldn't consider this a concise answer.

Do you not have a development environment separate from production? The way we do it here (albeit using git):

I use Netbeans, but I'm trying out phpStorm.

  • Development environment with VCS (master, dev, feature1, feature2)
  • Production environment with VCS (master)

The "master" branch on production mirrors the "master" branch on dev.

  • Each day, pull from development dev branch to local.
  • Create a new branch (if needed). Make changes. Commit these changes to development, then push to development.

From here we can see all the changes in a development environment that perfectly mirrors our production (live) environment.

If these changes are approved:

  • Merge development (dev) branch into development (master) branch.
  • Push development (master) to production (master).

All of this can be done inside Netbeans (and phpStorm) using git post-receive hooks.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.