Underscore: repoκ°€ ​​git fsck에 μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€.

에 λ§Œλ“  2020λ…„ 10μ›” 31일  Β·  5μ½”λ©˜νŠΈ  Β·  좜처: jashkenas/underscore

μž¬ν˜„ :

$ git config --system receive.fsckObjects true
$ git clone [email protected]:jashkenas/underscore.git  # or `git submodule add -- [email protected]:jashkenas/underscore.git`
Cloning into 'underscore'...
remote: Enumerating objects: 215, done.
remote: Counting objects: 100% (215/215), done.
remote: Compressing objects: 100% (130/130), done.
error: object b252cd0cf660db8fea1a40ae7d3ba0e34a41ffd3: zeroPaddedFilemode: contains zero-padded file modes
fatal: fsck error in packed object

λͺ¨λ“  5 λŒ“κΈ€

@zackschuster 문의 ν•΄ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€.

git fsck λ˜λŠ”μ΄ νŠΉμ • 였λ₯˜μ— λŒ€ν•΄ λ“€μ–΄ λ³Έ 적이 μ—†μ—ˆκΈ° λ•Œλ¬Έμ— μ˜¨λΌμΈμ—μ„œ μΆ”κ°€ 정보λ₯Ό μ°Ύμ•„μ•Όν–ˆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” κ²°κ΅­ https://github.com/pallets/flask/issues/2029 μ—μ„œ μ΄λŸ¬ν•œ μœ ν˜•μ˜ λ¬Έμ œμ— λŒ€ν•΄ 두 가지 κ°€λŠ₯ν•œ 해결책이 μžˆμŒμ„ λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€. 첫 λ²ˆμ§ΈλŠ” μ €μž₯μ†Œλ₯Ό λ‹€μ‹œ λΉŒλ“œν•˜μ—¬ 문제λ₯Ό μ‹€μ œλ‘œ ν•΄κ²°ν•˜μ§€λ§Œ κ²°ν•¨μ΄μžˆλŠ” 객체 μ΄ν›„μ˜ λͺ¨λ“  ν•΄μ‹œκ°€ λ³€κ²½λ˜κΈ° λ•Œλ¬Έμ— λ„ˆλ¬΄ νŒŒκ΄΄μ μž…λ‹ˆλ‹€. 두 λ²ˆμ§ΈλŠ” μ‚¬λžŒλ“€μ—κ²Œ λ¬Έμ œμ— λŒ€ν•΄ κ²½κ³ ν•˜κ³  문제λ₯Ό ν•΄κ²°ν•˜λŠ” 방법을 μ•Œλ €μ£ΌλŠ” λ¬Έμ„œλ₯Ό μΆ”κ°€ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€ (μ™„λ²½ν•˜κ²Œ μ‹€ν–‰ κ°€λŠ₯ν•΄ λ³΄μž…λ‹ˆλ‹€). 이 μ €μž₯μ†Œμ—λŠ” ν›„μžμ˜ μ†”λ£¨μ…˜ 만 μ‹€ν–‰ κ°€λŠ₯ν•©λ‹ˆλ‹€.

ν•˜μ§€λ§Œμ΄ λͺ¨λ“  것은 였λ₯˜λ₯Ό μž¬ν˜„ ν•  수 μ—†κΈ° λ•Œλ¬Έμ— λ‚˜μ—κ²ŒλŠ” μ•½κ°„μ˜ 문제둜 λ³΄μž…λ‹ˆλ‹€. μ‹œμŠ€ν…œ 전체 섀정을 λ³€κ²½ν•˜λŠ” 데 ν•„μš”ν•˜κΈ° λ•Œλ¬Έμ— 첫 번째 λͺ…λ Ή μ•žμ— sudo λ₯Ό μ‚¬μš©ν•˜λŠ” 것을 μ œμ™Έν•˜κ³ λŠ” Git 2.26.2λ₯Ό μ‚¬μš©ν•˜μ—¬ μ‹œμž‘ κ²Œμ‹œλ¬Όμ—μ„œ μ •ν™•ν•œ λͺ…령을 μ‹€ν–‰ ν•΄ λ³΄μ•˜μŠ΅λ‹ˆλ‹€. μ €μž₯μ†Œκ°€ 였λ₯˜μ—†μ΄ 방금 λ³΅μ œλ˜μ—ˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ b252cd0cf660db8fea1a40ae7d3ba0e34a41ffd3 ν•΄μ‹œλ‘œ 개체λ₯Ό 찾을 수 μ—†μŠ΅λ‹ˆλ‹€.

@zackschuster λ°œμƒν•œ λ¬Έμ œκ°€ 잘λͺ»λœ λ„€νŠΈμ›Œν¬ 전솑, 잘λͺ»λœ λ””μŠ€ν¬ 읽기 λ˜λŠ” νŠΉμ • λ²„μ „μ˜ Git λ²„κ·Έλ‘œ μΈν•œ 것이 μ•„λ‹Œμ§€ λ‹€μ‹œ ν™•μΈν•˜μ‹­μ‹œμ˜€. μ§€κΈˆμ΄ 문제λ₯Ό μ’…λ£Œν•˜κ² μŠ΅λ‹ˆλ‹€. κ²°κ΅­ 였λ₯˜λ₯Ό μž¬ν˜„ν•˜κΈ° μœ„ν•΄ μˆ˜ν–‰ ν•  μˆ˜μžˆλŠ” μΆ”κ°€ 단계λ₯Ό μ°Ύκ±°λ‚˜ λ‹€λ₯Έ μ‚¬λžŒμ΄ 이것이 μ‹€μ œλ‘œ Underscore repo에 λ¬Έμ œκ°€ μžˆμŒμ„ 확인할 수 μžˆλ‹€λ©΄ λ‹Ήμ—°νžˆ λ‹€μ‹œ μ—΄ κ²ƒμž…λ‹ˆλ‹€.

@jgonggrijp μ €λŠ” macOSμ—μ„œ git 2.29.2λ₯Ό μ‚¬μš©ν•˜κ³  있으며 autoconf 및 makeλ₯Ό μ‚¬μš©ν•˜μ—¬ ν‘œμ€€ λ°©μ‹μœΌλ‘œ μ»΄νŒŒμΌλ˜μ—ˆμŠ΅λ‹ˆλ‹€. μ½˜μ†” λͺ…λ Ήμ˜ 였λ₯˜μ— λŒ€ν•΄ μ‚¬κ³Όλ“œλ¦½λ‹ˆλ‹€. μ†”μ§νžˆ $HOME/.gitconfig μ—μ„œ receive.fsckObjectsλ₯Ό μ„€μ •ν–ˆμŠ΅λ‹ˆλ‹€.

λ‚΄ λμ—μ„œ blob 였λ₯˜λ₯Ό μΆ”μ ν•˜λŠ” 방법을 λͺ¨λ₯΄κ² μ§€λ§Œ μžμ„Έν•œ λ‚΄μš©μ„ μ–»μœΌλ €κ³  λ…Έλ ₯ν•  κ²ƒμž…λ‹ˆλ‹€.

@jgonggrijp λͺ‡ 가지 정보λ₯Ό μ°Ύμ•˜μŠ΅λ‹ˆλ‹€. μ°Έκ³  :

  1. git clone --config transfer.fsckobjects=false [email protected]:jashkenas/underscore.git ν•˜λ©΄ 였λ₯˜λ₯Ό ν”Όν•  수 μžˆμŠ΅λ‹ˆλ‹€ ( transfer.fsckobjects ; μ›λž˜ λ³΄κ³ μ„œμ— 잘λͺ»λœ 섀정이 μžˆμŠ΅λ‹ˆλ‹€. μ‚¬κ³Όλ“œλ¦½λ‹ˆλ‹€!)
  2. 이후에 μ €μž₯μ†Œμ—μ„œ git fsck λ₯Ό μ‹€ν–‰ν•˜λ©΄ ( v2.29.2 ) 두 개의 zeroPaddedFilemode 였λ₯˜κ°€ λ‚˜νƒ€λ‚©λ‹ˆλ‹€.
  3. git cat-file -p λŠ” 잘λͺ»λœ μ»€λ°‹μž„μ„ μ•”μ‹œν•˜λŠ” 파일 λͺ©λ‘μ„ λ³΄μ—¬μ€λ‹ˆλ‹€. git cat-file -t λŠ” tree μœ ν˜•μœΌλ‘œ ν‘œμ‹œν•©λ‹ˆλ‹€. git show 좜λ ₯은 git cat-file -p 의 덜 μœ μ΅ν•œ λ²„μ „μž…λ‹ˆλ‹€. git log λŠ” 아무것도 λ°˜ν™˜ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μ°Έμ‘°λ₯Ό μœ„ν•΄ μ½˜μ†” 좜λ ₯을 ν¬ν•¨ν–ˆμŠ΅λ‹ˆλ‹€.

~/Source
$ git clone --config transfer.fsckobjects=false [email protected]:jashkenas/underscore.git
Cloning into 'underscore'...
remote: Enumerating objects: 215, done.
remote: Counting objects: 100% (215/215), done.
remote: Compressing objects: 100% (130/130), done.
remote: Total 10434 (delta 185), reused 101 (delta 85), pack-reused 10219
Receiving objects: 100% (10434/10434), 5.61 MiB | 9.21 MiB/s, done.
Resolving deltas: 100% (6770/6770), done.

~/Source
$ cd underscore 

~/Source/underscore
$ git fsck
Checking object directories: 100% (256/256), done.
warning in tree b252cd0cf660db8fea1a40ae7d3ba0e34a41ffd3: zeroPaddedFilemode: contains zero-padded file modes
warning in tree 8a654ec549a230dcab28e54c6e53c460cb9e190d: zeroPaddedFilemode: contains zero-padded file modes
Checking objects: 100% (10434/10434), done.

~/Source/underscore
$ git cat-file -p b252cd0cf660db8fea1a40ae7d3ba0e34a41ffd3
100644 blob d8cef485ec7309b938b4c3bc19171458e9139811    LICENSE
100644 blob 333b13f45b62427fd0840c77bb55bfc8fb96be6b    README
100644 blob 721c294b3ddb1d3e6ed35a7d9336e162aab01bb9    Rakefile
100644 blob bdaef73ca2ca82b90d37cec4b9c38606b440d619    index.html
100644 blob 6771de07ecd088853df1376f3693e81584ec2560    package.json
040000 tree d0a277f748b309f3d26e13d1cb5133ff003c468d    test
100644 blob 7cfbf993705f83e7fde17e9745b4187f7a4047b2    underscore-min.js
100644 blob 625411233e487b5cd8da1a32a69e5693b1862c09    underscore.js

~/Source/underscore
$ git cat-file -p 8a654ec549a230dcab28e54c6e53c460cb9e190d
100644 blob 9644b34c3f5c16753d1061497aa7aab426e6c896    LICENSE
100644 blob e41015cd7cc04a940ac4e7a451aeb0b0b384c3a3    README
100644 blob 6af14bb6d570698990d30aa0b46e398ae3fd48b1    Rakefile
100644 blob 1a03be19fc8ddf61b113f71c19d6892fb74ff4f5    index.html
100644 blob 2cbc8128d9db1feabc44a3be14c504e40b6b7e2e    package.json
040000 tree fae9dcb01827d13b2b5fbd9afab07489b249dab8    test
100644 blob 2c8b499882c2a5d662ea35c80ec7ea0fa111814f    underscore-min.js
100644 blob 42bf31a27545d0d5460c655d13ce9bbf76e540b3    underscore.js

~/Source/underscore
$ git cat-file -t b252cd0cf660db8fea1a40ae7d3ba0e34a41ffd3
tree

~/Source/underscore
$ git cat-file -t 8a654ec549a230dcab28e54c6e53c460cb9e190d
tree

~/Source/underscore
$ git show b252cd0cf660db8fea1a40ae7d3ba0e34a41ffd3
tree b252cd0cf660db8fea1a40ae7d3ba0e34a41ffd3

LICENSE
README
Rakefile
index.html
package.json
test/
underscore-min.js
underscore.js

~/Source/underscore
$ git show 8a654ec549a230dcab28e54c6e53c460cb9e190d
tree 8a654ec549a230dcab28e54c6e53c460cb9e190d

LICENSE
README
Rakefile
index.html
package.json
test/
underscore-min.js
underscore.js

~/Source/underscore
$ git log b252cd0cf660db8fea1a40ae7d3ba0e34a41ffd3

~/Source/underscore
$ git log 8a654ec549a230dcab28e54c6e53c460cb9e190d

~/Source/underscore
$ 

이제 문제λ₯Ό μž¬ν˜„ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 인내 ν•΄ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€, @zackschuster.

λ”°λΌμ„œ μš°λ¦¬λŠ”μ΄ λ¬Έμ œκ°€ μ‘΄μž¬ν•œλ‹€λŠ” 사싀을 λ¬Έμ„œν™”ν•˜κ³  μ‚¬λžŒλ“€μ΄ μ–΄λ–»κ²Œ ν•΄κ²°ν•  수 μžˆλŠ”μ§€ μ„€λͺ…ν•΄μ•Όν•©λ‹ˆλ‹€. μ•„λ§ˆλ„ CLONING.md λŠ” κ·ΈλŸ¬ν•œ λ¬Έμ„œλ₯Όμœ„ν•œ μ μ ˆν•œ μž₯μ†Œ 일 κ²ƒμž…λ‹ˆλ‹€.

λ˜λŠ”, μ–΄μ©Œλ©΄ μš°λ¦¬λŠ” μ–΄λ–»κ²Œ 든이 λ‚˜λ¬΄λ₯Ό μ°Έμ‘°ν•˜λŠ” 컀밋 μ•Œμ•„λ‚Ό 수 μžˆμŠ΅λ‹ˆλ‹€. 운이 μ’‹λ‹€λ©΄ μ‚­μ œ (λ˜λŠ” 재 ꡬ좕) ν•  μˆ˜μžˆλŠ” μ€‘μš”ν•˜μ§€ μ•Šμ€ μ‚¬μ΄λ“œ λΈŒλžœμΉ˜μ—λ§Œμžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. μš°λ¦¬λŠ” μ•„λ§ˆ 이것을 λ¨Όμ € μ‹œλ„ν•΄μ•Όν•©λ‹ˆλ‹€.

ν™˜μ˜ν•©λ‹ˆλ‹€.

λ‚˜λŠ” git fast-export + git fast-import ( 이 SO λŒ€λ‹΅ μ‚¬μš© )을 μ‚¬μš©ν•΄ λ³΄μ•˜κ³  repoλ₯Ό μˆ˜μ •ν–ˆμ§€λ§Œ ν•΄μ‹œλ₯Ό λ³€κ²½ν–ˆμŠ΅λ‹ˆλ‹€. flaskλŠ” contributing μ•„λž˜μ— zeroPaddedFilemode λͺ…λ Ήμ–΄λ₯Ό λ‚˜μ—΄ν•˜λ―€λ‘œ ν…μŠ€νŠΈλ₯Ό CONTRIBUTING.md λ³΅μ‚¬ν•˜λŠ” 것이 μ˜΅μ…˜μ΄ 될 수 μžˆμŠ΅λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰