threads / discuss / 32035

git-clone and unreliable links?

Subject: git-clone and unreliable links?

## tl;dr

3 messages between Nov 7, 2012 and Nov 9, 2012.

replies: 2people: 3as markdown or json

Josef Wolf· Nov 7, 2012, 15:35 UTC · lore
Hello,

When using git-clone over an unreliable link (say, UMTS) and the network goes down, git-clone deletes everything what was downloaded. When the network goes up again and you restart git-clone, it has to start over from the beginning. Then, eventually, the network goes down again, and everything is deleted again.

Is there a way to omit the deleting step, so the second invocation would start where the first invocation was interrupted?

Shawn Pearce· Nov 7, 2012, 15:54 UTC · re: Josef Wolf · lore

Re: git-clone and unreliable links?

On Wed, Nov 7, 2012 at 7:35 AM, Josef Wolf <jw@raven.inka.de> wrote:
Show 8 quoted lines
> When using git-clone over an unreliable link (say, UMTS) and the network goes
> down, git-clone deletes everything what was downloaded. When the network goes
> up again and you restart git-clone, it has to start over from the
> beginning. Then, eventually, the network goes down again, and everything is
> deleted again.
>
> Is there a way to omit the deleting step, so the second invocation would start
> where the first invocation was interrupted?
No, because a clone is not resumable.

The best way to obtain a repository over an unstable link is to ask the repository owner to make a bundle file with `git bundle create --heads --tags` and serve the file using standard HTTP or rsync, which are resumable protocols. After you download the file, you can clone or fetch from the bundle to initialize your local repository, and then run git fetch to incrementally update to anything that is more recent than the bundle's creation.

Sitaram Chamarty· Nov 9, 2012, 16:35 UTC · re: Shawn Pearce · lore

Re: git-clone and unreliable links?

On Wed, Nov 7, 2012 at 9:24 PM, Shawn Pearce <spearce@spearce.org> wrote:
Show 19 quoted lines
> On Wed, Nov 7, 2012 at 7:35 AM, Josef Wolf <jw@raven.inka.de> wrote:
>> When using git-clone over an unreliable link (say, UMTS) and the network goes
>> down, git-clone deletes everything what was downloaded. When the network goes
>> up again and you restart git-clone, it has to start over from the
>> beginning. Then, eventually, the network goes down again, and everything is
>> deleted again.
>>
>> Is there a way to omit the deleting step, so the second invocation would start
>> where the first invocation was interrupted?
>
> No, because a clone is not resumable.
>
> The best way to obtain a repository over an unstable link is to ask
> the repository owner to make a bundle file with `git bundle create
> --heads --tags` and serve the file using standard HTTP or rsync, which
> are resumable protocols. After you download the file, you can clone or
> fetch from the bundle to initialize your local repository, and then
> run git fetch to incrementally update to anything that is more recent
> than the bundle's creation.

If the server is running gitolite, the admin can set it up so that a bundle file is automatically created as needed (including "don't do it more than once per <duration>" logic), and serve it up over rsync using the same ssh credentials as for access to the repo itself.

However, this is not particularly useful for systems with git://, although it could certainly be *adapted* for http access.

[Documentation is inline, in src/commands/rsync, for people who wish to know.]
-- 
Sitaram

← back to recent threads