Working with git
Overview
Sticking with the concept of running my own cloud servers instead of putting every bit of my life out on the Internet, I want to store my source code in my own git server.
I have already installed git and ssh and web services on Bellman so now all I need to do is configure it.
Use case: web app development
One of the main reasons I want my own git server is so that I can sync a web app between my laptop and a server.
My work flow: I develop on the laptop, then I push changes to the git server, then I pull the changes down into the live web server.
The theory is that if the live server breaks, I can revert the changes.
Configuration
See also: http://www.git-scm.com/book/en/v2/Git-on-the-Server-Setting-Up-the-Server
I am using ssh for file transfer.
I find it easiest to create a new empty repo directly on the server and then push existing content into it.
ssh bellman cd /green/repositories git init --bare myproject.git create a bare repository exit cd Projects assuming myproject is a folder containing the files you want in a repo cd myproject git init make a gitignore file in myproject git add some files git commit -m 'initial commit' git remote add origin bwilson@bellman:/green/repositories/myproject.git git push origin master this pushes committed files from the local repository to the master branch on the remote machine
Now I should be able to clone my project onto the web server and start using git to keep it updated.
ssh webserver cd /var/www/appserver git clone bwilson@bellman:/green/repositories/myproject.git
On my copy I need to define the remote repo,
git remote add origin [email protected]:/green/repositories/myproject.git
When I make changes on the local laptop, first I commit them locally.
git commit
..then I push them up to the git server
git push origin master
..then I pull them down onto the public web server
git fetch
Then I create a virtualenv and load the requirements.
cd myproject virtualenv env source env/bin/activate pip install -r requirements.txt python run.py
Branching and all that
This explanation is pretty good. Darn good. http://longair.net/blog/2009/04/16/git-fetch-and-merge/