Hi. Ive used Magento 1 for a few years now, old school style with a local development copy, a staging environment up on a remote server (using a subdomain with htaccess.... its more of a dev/test environment really) and then the live site on the same server environment.
Ive just used FTP, PhpMyAdmin and few basic SSH commands to do the work.
I want to move to Magento 2 CE and improve my workflow.
I will be needing some development support for the new theme from remote workers and it got me thinking about how best to structure my workflow and project.
I don't really want any remote freelance developers to access my full website code as this is really one of the companies assets... but I realise that to work correctly with Magento I will need to incorporate some SVN type system.
Can those with experience share what would be the simplest option for me. I looked at github, then found it was a cost to run private repository each month.. and wondering if I can install svn system onto my linux dedicated server and use local svn tool on my Mac to push local files up to server? Or maybe using GIT is the best and I pay for private repository...
Sorry, this is all new to me and im looking to learn....... need advice on a simple system I can track changes from remote workers etc and also be able to run upgrades on Magento or install new modules and test before I do this on the live website.
Then I get confused about the database syncing side of it also..
Any advice on a workflow and svn system for me as an individual who is using a few remote workers will be appreciated thank you.
Solved! Go to Solution.
Maybe you can try with Bitbucket. You'll find free plans with private repositories, and for 1 repository you'll be more than OK.
Also you can have some proejct managment/issue tracker included.
(my 2 cents)
GIT is the best protocol that you can use and for free private repo, look for GitLab instead of GitHub. You will have all facilities there are two main difference.
1. You can host your own Gitlab on your machines for version control and their community edition is free or you can use gitlab who is service thousands of users for free(Their EE is paid).
2. In GitHub you have PR and here you will have MR(Merge Request).
Thank you for the replies.
I am happy to use Bitbucket and a local Mac Sourcetree to manage.... (I will practice commands over time to get up to speed with Git).
What I am struggling with is a decent workflow for my development.
I am currently thinking.
- Local install for develoopment
- Remote staging environment (on same environement as live) for final testing.
- Bitbucket as Master Code repository so can PULL to staging environment to update files there.
- Remote work uses git to contribute their work to the project
But it brings in many questions, such as how to keep databases in sync between local and staging environments. If I add a new module locally... it gets put into the code but then how does my staging environment have the right tables or config settings without me manually installing it on that environment also.
Also how can I easily "annoymise" my databases and protect my private database information from 3rd party workers.
... I think without being a developer or SQL scriptwriter these things are not easy to manage without doing it manually.. a task that is difficult when the database is growing large.
Does anyone have a tested easy to manage workflow they can recommend for 1 website, a solo web guy (myself) who uses 3rd party developers for features?
There isn't a magic bullet. Any approach could be different according with the team, the tools, the project, etc.
If you want to start to discover which workflow could be better, mayhe you should read this document: https://www.atlassian.com/git/tutorials/comparing-workflows
It will explain the difference between several approaches.
For small teams, I guess the feature branch sould be a really good starting point.
The part of your question (if a module needs some database tables...). Your modules should be the responsable to create tables or insert values. When I say values I mean values such configurations, attribute definitions, etc. Not, for example, a product, or a customer.
You development database shouldn't contain any LIVE data (Customer and Orders information). So the DEV database should be shareable between devs without any kind of repercution. (Also, you should use NDAs with external providers).
(my 2 cents)