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

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

From
Alexander E Genaud <alex@genaud.net>
Date
Aug 2, 2008, 22:32 UTC
Message-ID
<ee521d6f0808021532k66bc5b24ma2eeb51021fb5f36@mail.gmail.com>
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?

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

-- 
[ alex@genaud.net ][ http://genaud.net ]
[ B068 ED90 F47B 0965 2953 9FC3 EE9C C4D5 3E51 A207 ]
Next: Matt Pearson
Message 1 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.