We’re in the process of migrating from Mercurial to Git for our workflow and I have two minor issues.
First, is it possible to “clone” a local repository directly into an empty remote (ssh) dir?
Currently when we create a new website we basically clone our CMS locally, configure it and then we clone it on the central repo and on the webserver (hg clone . ssh://account@server/www). That way we have instant access to push/pull goodness.
This brings me to the second issue, remote deployment.
Currently with Mercurial, I have a simple hooks in the remote repos that execute hg up when a changeset is received.
To do the same with Git I’ve followed the instructions here: http://caiustheory.com/automatically-deploying-website-from-remote-git-repository but I’d like to keep the .git directory in the website root as it is the case with Mercurial (it’s protected by Apache config and I can’t export GIT_DIR for all accounts as some have more than one website/repos).
Is it possible to have basically the same setup without separating the working dir from the repos?
To answer your first question, yes, you can. Suppose the remote directory is
ssh://user@host/home/user/repo. This must be a git repository, create that withgit init --bareorscpyour localrepo.git(can be created withgit clone) directory to remote. Then do:This will push all locally-existing branches to the remote repository.
To get to your next question, you should be able to do the same thing by using a different set of commands. Try these:
You would, of course, run the remote/push commands above after this step. You may have to check out a specific branch after doing so, so that the “somesite” clone on the server actually knows which branch to follow. From then on out, pushing to that repository should trigger a re-checkout of that branch.