원격 저장소로 Push 할때
아래처럼 오류가 난다면 저장소의 퍼미션을 변경합니다.
증상
[오류1]
Counting objects: 8, done.
Delta compression using 2 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (5/5), 1.37 KiB, done.
Total 5 (delta 2), reused 0 (delta 0)
error: insufficient permission for adding an object to repository database ./objects
fatal: failed to write object
error: unpack-objects exited with error code 128
error: unpack failed: unpack-objects abnormal exit
To git@github.com:bixo/bixo.git
! [remote rejected] master -> master (n/a (unpacker error))
error: failed to push some refs to ‘git@github.com:bixo/bixo.git’
[오류2]
unpack-objects abnormal exit
해결
옵션설명
-R
옵션은 퍼미션 변경 대상이 디렉토리일 경우
그 하위 경로에 있는 모든 파일과 디렉토리의 퍼미션을 변경합니다.
g+ws
그룹(g) 권한에 쓰기(w)와 스티키sticky(s) 속성을 추가(+) 합니다.
디렉토리에 sticky 속성이 붙게 되면 그 디렉토리에 생성되는
파일이나 폴더는 똑같은 그룹 이름과 속성을 같게 됩니다.
*
모든 파일과 폴더를 대상으로 합니다.
sudo 명령어
관리자(root)가 특정 사용자(특정 그룹)에게
특정 명령(명령그룹)을 root계정으로 실행할 수 있는 권한부여
다른방법
core.sharedRepository 옵션은
group (true), all (world, everybody), umask (false) 까지 제공되는데
group이나 true로 했을 경우
저장소 내에 파일 생성시 그룹 쓰기 권한을 세팅하게 되고,
all은 모든 사용자가 읽기 가능 + 그룹쓰기 권한,
umask나 false로 설정시 umask 값에 따라서 권한 설정을 하게 된다.
Default는 umask (false) 입니다.
증상 (개인메모용)
Egit Push 할 때
Pushed to ani-polaroid-canvas – origin
An internal Exception occurred during push: ssh://zxcv@twipixel.com/git/twipixel/ani-polaroid-canvas.git: Pipe closed
터미널에서 직접 Push 할 때
zxcv@twipixel.com’s password: Counting objects: 6, done. Delta compression using up to 4 threads. Compressing objects: 100% (5/5), done. remote: error: insufficient permission for adding an object to repository database ./objects remote: fatal: failed to write object error: pack-objects died of signal 13 error: failed to push some refs to ‘ssh://zxcv@twipixel.com/git/twipixel/ani-polaroid-canvas.git‘ twipixel-MacBook-Pro:AniPolaroidCanvas twipixel$ git push ssh://twipixel@twipixel.com/git/twipixel/ani-polaroid-canvas.git warning: push.default is unset; its implicit value has changed in
해결
사용자를 git 그룹에 포함시킵니다.
현재 저장소의 권한은
소유자는 git-GitLab, 그룹 git 으로 설정되어 있습니다.