0

Our team (about 5 people) builds web applications in a pretty chaotic way. There is one local server and one production server. Any development takes place on the local server and then is uploaded to the production server (when they consider it to be "done"). This usually ends up nasty. Someone is redesigning templates, someone is changing core functionality and someone builds a new feature that depends on something that is influenced by changes to the core functionality - at the same time. Before people can even start working, they make sure the files they need to change are "free" since files are accessed directly and would get overwritten. Having people with different knowledge for each discipline, I usually need to check all changes done to ensure nothing will break (regression). This is horrible and hard to collaborate. I'm thinking about a way to change this messy workflow.

I read that Git can be used to manage collaborative web applications but I can't figure out how to set that up. Branches on local machines just won't work (each co-worker would need to have his own webserver, app server, database server and the same configurations). Multiple branches on the same server (basically each developer has his own branch?) require a way to commit and merge changes at the push of a button. Is that even possible without having to do everything manually?

In the end we need a system that allows us to:

  • develop without concurrent dependencies (separated environments)
  • review/approve commits
  • automatically merge approved commits
  • automatically distribute the latest version (force pull)
  • revert changes / demerge

I can imagine this working with source code where there's nothing to share but code and compiler. But web applications which rely heavily on their environment, seem to be way more difficult. But then again: Maybe I do not understand the whole thing yet. :(

Alex
  • 7,743
  • 1
  • 18
  • 38
  • 1
    Oh gracious. That is very chaotic. If you have about five people, you can set up a Bitbucket account. There's a five-users free account that lets you keep your repositories private. – Chris Forrence Jan 29 '14 at 16:56
  • http://stackoverflow.com/questions/315911/git-for-beginners-the-definitive-practical-guide?rq=1 – Chris Forrence Jan 29 '14 at 16:58
  • 1
    If I understood correctly everyone develops and tests their changes under the same instance of the web server? If that is indeed the case, that's a recipe for disaster. Each developer should have a isolated environment to develop and test his changes. It's very easy nowadays using Virtual Machines and whatnot, to have every dev using the same configuration. So there's really no excuse for not having separate environments. – Pedro Rodrigues Jan 29 '14 at 17:33

1 Answers1

2

Having a local environment for each developer is a must. Take a look at the guide we wrote about developing and deploying with branches:

http://guides.beanstalkapp.com/version-control/branching-best-practices.html

I hope you'll find it useful.

Ilya Sabanin
  • 786
  • 5
  • 9
  • Thanks for the guide. I get the part about having separate environments/developing branches to be merged and deployed, but now I wonder about the actual software to do this. I mean creating a branch is basically just copying the latest stable trunk and whenever anything is supposed to be merged, clone it and archive it a.k.a. saving a version. Why even consider using extra software (except merging) for this? – Alex Jan 29 '14 at 21:37
  • You don't really "need" extra software to make collaboration work, Git has everything you need. However using something like Beanstalk will save you a lot of time. – Ilya Sabanin Jan 30 '14 at 02:21