git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: git-pull sets write bit, git-push does not

From
MPMatt Pearson <404emailnotfound@gmail.com>
Date
Aug 2, 2008, 23:18 UTC
Message-ID
<706b4240808021618y5604b7c9h915237c30d87dace@mail.gmail.com>
In-Reply-To
<ee521d6f0808021532k66bc5b24ma2eeb51021fb5f36@mail.gmail.com>
On Sat, Aug 2, 2008 at 6:32 PM, Alexander E Genaud <alex@genaud.net> wrote:
Show 13 quoted lines
> git-pull sets write bit, git-push does not
>
> Hello,
>
> Background: I am using Git locally with ClearCase upstream. I
> initialized a Git repository on top of a ClearCase snapshot view,
> while my work branches are in a clone. As ClearCase is particular
> about the write bit, I have come to depend on an undocumented feature
> of Git. Namely, that git-push preserves read only permissions, while
> git-pull sets modified files writable.
>
> Can git-push be relied upon to preserve the write bit (readonly)? Why
> is git-pull different? Is it a side effect of the plumbing?

Push and pull are not opposite operations: the opposite of push is fetch. This is because pull updates the working copy, while push does not (like fetch, it only modifies the ref).

Show 47 quoted lines
>
> Thanks,
> Alex
>
> http://genaud.net/2008/08/clearcase-globally-git-locally/
>
>
> Simplified case:
>
> echo --
> echo create a repo r1 with files A and B committed
> echo --
> mkdir r1
> cd r1
> echo A > A
> echo B > B
> git init
> git add .
> git commit -m init
>
> echo --
> echo create an identical repo r2 whose files are readonly
> echo --
> cp -r ../r1 ../r2
> chmod u-w ../r2/[AB]
>
> echo --
> echo push a modification of A from r1 to r2
> echo --
> echo AA > A
> git commit -a -m modA
> git push ../r2
>
> echo --
> echo pull a modification of B from r1 to r2
> echo --
> echo BB > B
> git commit -a -m modB
> cd ../r2
> git pull ../r1
>
> echo --
> echo notice that pushed A remains readonly
> echo while pulled B has become writable
> echo --
> ls -l
>

After running this: $ cat A A $ cat ../r1/A AA

The working copy in r2 was not updated with the changes you pushed to it (both the content and the mode change).

Previous: Alexander E GenaudNext: Matt Pearson
Message 2 of 3 in “git-pull sets write bit, git-push does not”
  1. Alexander E GenaudAug 2, 2008
  2. Matt PearsonAug 2, 2008
  3. Matt PearsonAug 3, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.