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 ]