Just a quick question in regards to version control using github + modman. I understand how both work and can use both independently fine. However my query is the following:-

We version control every version of our sites into a private github repo, we want to start using modman to control our in-house built modules into our builds, what is the best approach to version controlling the website content so we can use github to deploy vs version controlling our modules seperately so they can be used and improved in multiple projects

Any advice in and around developing complete magento stores using this kind of approach would be appreciated. So would any advice into better ways or more efficient wants to manage this.

Ideally I want to get to the point where another one of our developers can pick up the project from github, clone onto a vanilla enterprise install and be able to update and deploy any modules modman has included.

EDIT The trouble I am having also is grasping how to actually get the files for a submodule when cloning from a repo. I have read other similar questions to this and they do not make total sense to me


1 Answer 1


We've been using Modman for installation of Magento modules for quite some time. Modman has a few shortcomings, but for the most part does a really good job. What Modman doesn't do is remember versions of modules that are checked out, or easily synching one machine's installed modules to another. - This is a manual process.

What we do is include a readme file in each project's root, that lists the Modman commands that are required to be run when setting up a new project instance, e.g. another developer's machine, or for a deployment.

Where this process lacks is if a module is updated, it must be communicated to each team member to ensure they run a modman update.

This Modman process works, but seems clunky.

One thing that I haven't tried, but want to try out on the next new Magento project, is the Magento Composer Installer. I have used composer, and think it's great for PHP projects in general. What it does do is keep a record of the version of the module that was installed. This makes it very easy to keep all machines in sync. The Magento Composer Installer is a Composer extension that works with the Magento directory structure, and creates symlinks/copies the same way that Modman does. I believe there's been a lot of work done to add the necessary composer.json files to the opensource Magento modules on GitHub, which should make it easy to use.

  • Thanks for your reply Luke Mills, I have decided to go for the solution you suggested with modman, but with the addition of dynamically adding all symlinks to gitignore file, using the @shell feature that modman provides. This was because I didnt want to version control symlinks in github. Here is my command to achieve this :- find * -type l >> .gitignore; cat .gitignore | sort | uniq > temp.gitignore; mv .gitignore .gitignore.bk; mv temp.gitignore .gitignore; rm -f .gitignore.bk; rm -f temp.gitignore;
    – lukefowell
    Commented May 30, 2013 at 9:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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