# Strange large push operation.

2 messages from 2008-12-26 to 2008-12-26. Participants: Brice Figureau, Sitaram Chamarty.
Thread: https://gitlist.dev/t/16871

## Brice Figureau, 2008-12-26 12:23

Subject: Strange large push operation.
Message-ID: <4954CCD6.5000105@daysofwonder.com>
URL: https://gitlist.dev/e/4954CCD6.5000105%40daysofwonder.com

```
Hi,

I'm a git user since about a year, but I can't say I'm really familiar 
with its internals. I am using git v 1.5.6.5

I have a quite large bare remote repository (around 1GiB, about 86k 
objects), and I have a clone on my development computer (which was 
cloned a long time ago). I use ssh to push/pull between those repositories.

About 2 months ago, we created a remote branch (let's call it 'branch') 
and pursued development on this branch and also on master, with a few 
regular merge points from master to 'branch'.

Two days ago, I wanted to start developping a new feature, and as such 
created a local branch from this branch, which we'll call 'newbranch'. I 
cherrypicked a couple of old (4 months) commits  that were in another 
local branch, and then added more small commits (about 10 sloc of 
changes on it) on top of these.

Then I wanted to push this newbranch as a remote branch with:
$ git push origin newbranch:refs/heads/newbranch

and obtained the following output:
Counting objects: 12767, done.
Compressing objects: 100% (3816/3816), done.
writing objects:   8% (935/11682), 2.40 MiB | 324 KiB/s
^C

I stopped the push because I don't get why there are so much objects to 
send while the diff between newbranch and branch is only 5 small commits 
  (and it obviously wants to push a large part of the history).

Is there a way to check what objects are sent to origin and why?
What could be the cause of the issue?
What's wrong with those repositories?

I tried to git gc both repositories, I also git fsck both repositories 
(and found 5 unreachables objects in the local one, should I care?). I 
also upgraded the remote git to latest 1.6.0.6 but this didn't change 
anything. I also tried --thin but that didn't change anything.

So what should I do to push only the changes between branch and newbranch?

Many thanks for any answer,
--
Brice Figureau

```

## Sitaram Chamarty, 2008-12-26 14:48

Subject: Re: Strange large push operation.
Message-ID: <slrngl9rmf.r7h.sitaramc@sitaramc.homelinux.net>
URL: https://gitlist.dev/e/slrngl9rmf.r7h.sitaramc%40sitaramc.homelinux.net
In-Reply-To: <4954CCD6.5000105@daysofwonder.com>

```
On 2008-12-26, Brice Figureau <brice+git@daysofwonder.com> wrote:

> Then I wanted to push this newbranch as a remote branch with:
> $ git push origin newbranch:refs/heads/newbranch

I'd have just said "git push origin newbranch" :-)

> and obtained the following output:
> Counting objects: 12767, done.
> Compressing objects: 100% (3816/3816), done.
> writing objects:   8% (935/11682), 2.40 MiB | 324 KiB/s
> ^C

> I stopped the push because I don't get why there are so much objects to 
> send while the diff between newbranch and branch is only 5 small commits 
>   (and it obviously wants to push a large part of the history).

Yes but you didn't actually say that the master has "branch"
-- perhaps it isn't as uptodate as you thought it was...?
Or perhaps there was a rebase or something that changed a
*lot* of stuff.

Try "git log -n 1 branch" on both machines to see if they
point to the same hash.

[Additionally, I'm not really sure if that progress is a
worst case estimate or a real estimate...]

> Is there a way to check what objects are sent to origin and why?

My all-time favourite git command is "bundle" [which should
tell you I work a lot with disconnected repos!]

Try "git bundle create /tmp/temp.bdl branch..newbranch" then
see how big that temp file is.  That'll be about what goes
to the other side (assuming the other side has the same hash
for "branch").

You could even take it to the other side and do the
following:
    git ls-remote temp.bdl  # shows refs in bundle
    git fetch temp.bdl one-of-the-refs-in-the-bundle
    git merge FETCH_HEAD # merge it into current branch

> What could be the cause of the issue?

can't say.  Try the following commands also to get a birds
eye view of the various branches on both sides
    git fetch   # update your idea of what's on remote
    git branch -a -v

I also like
    git log --graph --pretty=oneline --abbrev-commit --decorate --all
which I've aliased to "lg"

> (and found 5 unreachables objects in the local one, should I care?). I 

Nope.  Lots of reasons to have unreachable objects...

```
