问题
I would like to have a feature in my application that allows a user to change between versions, specifically to see the differences in the application between sprints. The user would simply select a version (Sprint A, Sprint B, etc.) from a dropdown and the page would refresh, showing the state of the application at that time.
This itself shouldn't be too much of a problem. I think we'll have a Git deploy framework that will checkout the appropriate branch on the server.
The problem is I want to allow, for example, someone from business to be able to take a look at the application as of Sprint B, while a developer can give a demo of what he did for Sprint C at the same time, without one branch checkout clobbering the other.
Every time you change branches to view a version, it will affect everyone viewing that server.
Is there a way to allow one user to view another branch on the server without affecting anyone else, and possibly without making lasting changes to the files on that server?
回答1:
I think we'll have a Git deploy framework that will checkout the appropriate branch on the server.
That is a good approach, but it need to checkout/update the appropriate branch in different folders (and your webapp need to redirect pages according to the user choice)
A post-receive hook is typically used in order to trigger a per-branch process: see for instance "how to process files on a branch in post-receive hook in git"
#!/bin/bash
while read oldrev newrev ref
do
branch=`echo $ref | cut -d/ -f3`
if [ "master" == "$branch" ]; then
....
来源:https://stackoverflow.com/questions/23507398/separate-git-deployments-on-a-single-server