On Sun, 5 Oct 2014 09:03:49 -0700 (PDT) Oliur Chowdhury <o.r.chowdh...@gmail.com> wrote:
> Hi, this is a more of a guidance question: > > I've a local git repo which I then push to public_html/stage in > siteground server. > > for each feature or bug issue I create a different branch and merge > it with the master branch. I then push it to the server. > > I want to know if there is anyway I can test different branches in > the browser url just like i can test the master branch. > > So, if I go to http://stage.tista.co.uk/ I can see the magento > installation (which is my master branch). > > Is there a way I can also check different branches under the stage > repo by going to a url? > > I did some googling but I didn't find anything. > > I need a way to test the feature/bug branches to make sure it works > before merging them with the master or pushing it to live. thanks There's no way to do the testing you want using Git alone. Here's why: when your browser performs an HTTP request, the web server reads files located in the so-called "work tree" of your server-side Git repository. The work tree contains files as they are recorded in a certain commit available in the repository (typically it's just the tip commit of a certain branch). Populating the work tree is called "checking out" (that's why it's done using `git checkout`) and hence the work tree is commonly called "the checkout" as well. Hence the work tree can be thought of as a "view" to a certain commit in the repository's history -- available for direct inspection/consumption. When your web server accesses the files in your work tree, it just accesses the file system -- it does not know anything about Git and does not call to it in any way. As you can see, in a non-bare Git repository (that is, a repository which has a work tree attached to it), there exists only a single work tree, and the only way to "see" the state of the project as recorede in another commit (say, the tip commit of another branch) is to check out that branch to the work tree. So what you can do about this? I'm not much into web development myself but I think I can offer a bit of advice anyway -- may be it sparks some idea in your head. 1) Have multiple work trees attached to the same repository, and have them available to the webserver via different vhosts of different pathname prefixes in the same vhost's URI. This is most easily done using the git-new-worktree script in the contrib section of Git sources. You could then automate your deployment using server repo's hooks to automatically check out tip commits of, say, "master" and "devel" in two work trees created beforehand. 2) Write a simple CGI script which would be accessible via that same web server and which would perform `git checkout` to the commit you tell it via a form provided by that CGI script. (1) Requires more work up front but simplified side-by-side testing while (2) requires less work up front but side-by-side testing is more tedious (requires work tree updating when switching). Also note that Git itself is not a deployment tool. Magento heavily relies on its database so only trivial changes are testable w/o messing with the database when you're updating the staging server. -- You received this message because you are subscribed to the Google Groups "Git for human beings" group. To unsubscribe from this group and stop receiving emails from it, send an email to git-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.