git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "brian m. carlson" <sandals@crustytoothpaste.net>
To: Mikhail Strelnikov <mikhail.strelnikov@gmail.com>
Cc: git@vger.kernel.org
Subject: Re: Multiple pushurls, different 'objects\info\packs'
Date: Wed, 22 Apr 2020 03:14:55 +0000	[thread overview]
Message-ID: <20200422031455.GG6465@camp.crustytoothpaste.net> (raw)
In-Reply-To: <CAAihzVJTN5V3o_aFeUuJH_8+nqZrKHJww3vFQ9K5W0DtbeM14w@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 2188 bytes --]

On 2020-04-21 at 18:07:42, Mikhail Strelnikov wrote:
> Hi,
> 
> I have a repo with two pushurls configured like this:
> 
> 
> C:\folder\1>git init --bare
> Initialized empty Git repository in C:/folder/1/
> 
> C:\folder\2>git init --bare
> Initialized empty Git repository in C:/folder/2/
> 
> C:\folder\w>git init
> Initialized empty Git repository in C:/folder/w/.git/
> 
> C:\folder\w>git add work.txt
> 
> C:\folder\w>git commit -m "Initial commit"
> [master (root-commit) 1b314f3] Initial commit
> 1 file changed, 1 insertion(+)
> create mode 100644 work.txt
> 
> C:\folder\w>git remote add origin C:\folder\1
> 
> C:\folder\w>git remote set-url origin --push --add C:\folder\1
> 
> C:\folder\w>git remote set-url origin --push --add C:\folder\2
> 
> C:\folder\w>git push --set-upstream origin master
> 
> 
> I would expect those two folders (C:\folder\1 and C:\folder\2) to
> contain exactly the same bytes. And they did for quite some time. But
> now there is a difference in 'objects\info\packs' (and some of
> objects\pack\pack-*.idx/pack are also different).
> 
> (all the commits are the same in both and all my data is also the same
> and 'fast-export --all' yields the same result)
> 
> I'd like to know what might have caused this nondeterminism and if
> there is something to do to prevent that.

You can get nondeterminism because the push to each repository happens
independently and delta compression is multithreaded.  You can therefore
compute different packs on push and get different packs in the result.

You could try to avoid it by disabling threading for pushes, but that
has to be done on each client that pushes to them.  In general, this is
not worth worrying about as long as the data is intact (that is, it
passes git fsck) and the refs are identical.  It is also not especially
easy to avoid, since determinism of pack files is not considered a goal
of Git.

Maybe if you tell us a little more about your reason for wanting
bit-for-bit identical replicas we can provide some assistance in helping
you achieve your goals.
-- 
brian m. carlson: Houston, Texas, US
OpenPGP: https://keybase.io/bk2204

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 263 bytes --]

  reply	other threads:[~2020-04-22  3:15 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-21 18:07 Multiple pushurls, different 'objects\info\packs' Mikhail Strelnikov
2020-04-22  3:14 ` brian m. carlson [this message]
2020-04-22 17:45   ` Mikhail Strelnikov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200422031455.GG6465@camp.crustytoothpaste.net \
    --to=sandals@crustytoothpaste.net \
    --cc=git@vger.kernel.org \
    --cc=mikhail.strelnikov@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).