Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can I download a git repository without git?

Tags:

git

I keep a lot of stuff in git repositories, out there on the net. The problem is that I often find myself on machines that don't have git, and where I also don't have root access. I don't necessarily need to commit changes back to the repo, just get the current master of the git project.

Is there any way to download a git repo, without having git itself? The ideal solution would be some kind of portable shell script.

Thanks!

like image 814
Casey Rodarmor Avatar asked Feb 27 '09 14:02

Casey Rodarmor


People also ask

How do I download a git repository?

Start from the github.com interface: Navigate to the repo that you want to clone (copy) to your computer -- this should be YOUR-USER-NAME/DI-NEON-participants . Click on the Clone or Download dropdown button and copy the URL of the repo.

Can I clone a repository without git?

since you only want the files, you don't need to treat it as a git repo. rsync -rlp --exclude '. git' user@host:path/to/git/repo/ . and this only works with local path and remote ssh/rsync path, it may not work if the remote server only provides git:// or https:// access.

Can I use GitHub without git?

You do not need GitHub to use git, but you cannot use GitHub without using git. There are many other alternatives to GitHub, such as GitLab, BitBucket, and “host-your-own” solutions such as gogs and gittea.


4 Answers

On the server with the git repository, create a shell script that exports and zips the code, then download that zip from the other machines.

For example:

cd /pub/git/project.git
git archive --format=zip --prefix=project/ HEAD > /home/project/public_html/downloads/project-dev.zip


Also, to make this generate HEAD on-demand, use a server-side script to execute the shell script and provide the zip file for download.

Here's a basic CFML script that does this - but it can obviously be written in any server-side language.

<cfset OutputFilename = "#ProjectName#-dev.zip"/>
<cfexecute name="/home/project/latest.sh"/>
<cfheader name="Content-Disposition" value="inline; filename=#OutputFilename#"/>
<cfcontent file="./#OutputFilename#" reset type="application/zip"/><cfsetting showdebugoutput="false"/><cfabort/>


EDIT: The cgit web interface to git supports this out of the box. View any commit and you can download a .zip, .tar.gz or a .tar.bz2

like image 199
Peter Boughton Avatar answered Oct 01 '22 22:10

Peter Boughton


You can just scp(1) a git repository to your local machine, if you have ssh access to the machine on which the git repository resides. When you want to merge the history, you can scp the new repo back and merge.

like image 22
EfForEffort Avatar answered Sep 29 '22 22:09

EfForEffort


Can you add a web-based Git browser to the computers hosting these repositories? Something like Gitweb or similar?

like image 42
Beep beep Avatar answered Sep 28 '22 22:09

Beep beep


It sounds like what you are looking for is something that will let you have a local working directory with your actual git repository remote.

Since that kinda goes against the git philsophy of always having your entire repository history local, I doubt you are going to find anything. Your best bet would probably be to just copy the sources from another git working directory via typical file copy methods (ftp a tarball, or whatever).

EDIT: OOC, does the git client actually require admin access to install for personal use? I understand needing admin to install one of the git servers, but the client should be OK with just user access. Try installing (or compiling from sources) just the client.

like image 37
T.E.D. Avatar answered Oct 01 '22 22:10

T.E.D.