# git-clone and unreliable links?

3 messages from 2012-11-07 to 2012-11-09. Participants: Josef Wolf, Shawn Pearce, Sitaram Chamarty.
Thread: https://gitlist.dev/t/32035

## Josef Wolf, 2012-11-07 15:35

Subject: git-clone and unreliable links?
Message-ID: <20121107153519.GI28437@raven.wolf.lan>
URL: https://gitlist.dev/e/20121107153519.GI28437%40raven.wolf.lan

```
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, 2012-11-07 15:54

Subject: Re: git-clone and unreliable links?
Message-ID: <CAJo=hJtJPnQFjvz8AAQjf5Rze-_99vF_tYi9CqJ7fiW245Dv1w@mail.gmail.com>
URL: https://gitlist.dev/e/CAJo%3DhJtJPnQFjvz8AAQjf5Rze-_99vF_tYi9CqJ7fiW245Dv1w%40mail.gmail.com
In-Reply-To: <20121107153519.GI28437@raven.wolf.lan>

```
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.

```

## Sitaram Chamarty, 2012-11-09 16:35

Subject: Re: git-clone and unreliable links?
Message-ID: <CAMK1S_jK2w2RYWbFmqnwJdSVmFnacGPLbEGzUWOLukqK_=HEbA@mail.gmail.com>
URL: https://gitlist.dev/e/CAMK1S_jK2w2RYWbFmqnwJdSVmFnacGPLbEGzUWOLukqK_%3DHEbA%40mail.gmail.com
In-Reply-To: <CAJo=hJtJPnQFjvz8AAQjf5Rze-_99vF_tYi9CqJ7fiW245Dv1w@mail.gmail.com>

```
On Wed, Nov 7, 2012 at 9:24 PM, Shawn Pearce <spearce@spearce.org> wrote:
> 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

```
