How can I make my local repository available for git-pull?

GitPullGit PullWorking Copy

Git Problem Overview


I have a working copy repository that I've been working in no problem; the origin for this repository is on GitHub.

I'd like to make my working copy repository available as the origin for my build machine (a VM on another physical host), so that commits I make to my working copy can be built and tested on the build machine without having to go via GitHub first. I already have a build for the GitHub repository going, but I'd like this to be a "golden" repository/build; i.e., if something goes in there, the build against GitHub should be guaranteed to pass.

I've looked at the documentation on Git URLs, and see that there's the option of using a URL in the form git://host.xz[:port]/path/to/repo.git/ (see, e.g., git-clone documentation). I want to do this in the simplest possible way, with the minimum of configuration: I don't want to have to set up an SSH daemon or web server just to publish this to my build machine.

I'm running Windows 7 x64 RC, I have MSysGit and TortoiseGit installed, and I have opened Git's default port (9814) on the firewall. Please assume working copy repo is at D:\Visual Studio Projects\MyGitRepo, and the hostname is devbox. The build machine is Windows Server 2008 x64. I have been trying the following command on the build machine, with the associated output:

D:\Integration>git clone "git://devbox/D:\Visual Studio Projects\MyGitRepo"
Initialized empty Git repository in D:/Integration/MyGitRepo/.git/
devbox[0: 192.168.0.2]: errno=No error
fatal: unable to connect a socket (No error)

Am I missing something?

Git Solutions


Solution 1 - Git

Five possibilities exist to set up a repository for pull from:

  • local filesystem: git clone /path/to/repo or git clone file://path/to/repo. Least work if you have networked filesystem, but not very efficient use of network. (This is almost exactly solution proposed by [Joakim Elofsson][Joakim-Elofsson])
  • HTTP protocols: git clone http://example.com/repo. You need any web server, and you also need to run (perhaps automatically, from a hook) [git-update-server-info][git-update-server-info] to generate information required for fetching/pulling via "dumb" protocols.
  • SSH: git clone ssh://example.com/srv/git/repo or git clone example.com:/srv/git/repo. You need to setup SSH server (SSH daemon), and have SSH installed on client (e.g. PuTTY on MS Windows).
  • git protocol: git clone git://example.com/repo. You need to run [git-daemon][git-daemon] on server; see documentation for details (you can run it as standalone process only for fetching, not necessary run as service). git-daemon is a part of git.
  • bundle: You generate bundle on server using [git-bundle][git-bundle] command, transfer it to a client machine in any way (even via USB), and clone using git clone file.bndl (if clone does not work, you can do "git init", "git remote add" and "git fetch").

What you are missing in your example is probably running git-daemon on server. That, or misconfiguring git-daemon.

Unfortunately I cannot help you with running git-daemon as service on MS Windows. There is nothing in announcement for last version of msysGit about git-daemon not working, though.

[git-update-server-info]: http://www.kernel.org/pub/software/scm/git/docs/git-update-server-info.html "git-update-server-info - Update auxiliary info file to help dumb servers" [git-daemon]: http://www.kernel.org/pub/software/scm/git/docs/git-daemon.html "git-daemon - A really simple server for git repositories" [git-bundle]: http://www.kernel.org/pub/software/scm/git/docs/git-bundle.html "git-bundle - Move objects and refs by archive" [Joakim-Elofsson]: https://stackoverflow.com/users/109869/joakim-elofsson

Solution 2 - Git

In addition to Jakub Narębski's answers, there is anotherway, more in-line with your original question. You could clone from github like you usually do, then when you want to perform a one-off pull from your local repo, just do this:

git pull /path/to/repo master

(instead of master you can put any branch name.)

Solution 3 - Git

If you have a path like

C:\Project\

and you did git init already, so you also have a folder

C:\Project\.git\

You now make a new folder

C:\.git\

Go into that folder and run git clone --bare ..\Project (bare is important),
go back to your C:\Project\ folder and do a git remote add-url local ..\.git\Project.
Now you just do git add -A, git commit -m "HelloWorld" and git push local master.

You may share the Project folder, connect it to Z: and do git clone Z:\Project - you can use now git pull origin master and git push origin master to push/pull changes from one computer to another.

Solution 4 - Git

The ssh route works well but does require a remote ssh server. If you have Windows platform then Cygwin provides a working ssh server that works with Git, but manually upgrade Git if using Cygwin Git (I wrote some hints at http://alecthegeek.wordpress.com/2009/01/21/top-tip-upgrade-git-on-cygwin/).

Solution 5 - Git

I recently changed one of my git projects to replicate itself to an HTTP server using sitecopy to do the actual file uploads.

It's pretty easy, just use git update-server-info then mirror the .git directory to some http-accessible directory on your server. I used 'project.git', which is fairly common.

Git pull from http://site/project-git works like a champ, and I don't have to have anything on the server except FTP access, though sitecopy supports webdav as well.

I don't recommend using sitecopy, however, as it doesn't keep multiple machines in sync well. For my project, the HTTP repository is readonly, and gold updates come from just one machine, so it works well enough.

Solution 6 - Git

If your remote host is in the same windows network, i.e. you can access it as \remotehost, then you can map network drive in explorer, let's say z: --> \remotehost\repodir, after that you can use 'git clone /z/myproject' to clone project

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionalastairsView Question on Stackoverflow
Solution 1 - GitJakub NarębskiView Answer on Stackoverflow
Solution 2 - GitPodView Answer on Stackoverflow
Solution 3 - GitmetadingsView Answer on Stackoverflow
Solution 4 - GitAlec the GeekView Answer on Stackoverflow
Solution 5 - GitdavenpcjView Answer on Stackoverflow
Solution 6 - GitjnrView Answer on Stackoverflow