iOS 개발 에 pre - commit hook 사용 하기
가장 초기 에 흔히 볼 수 있 는 오 류 를 막 으 려 면 pre - commit hook 을 사용 할 수 있 습 니 다.
주: 원작 자의 친구 Sami Samhuri 가 그의 스 크 립 트 를 개 선 했 고 본문 도 이에 따라 업데이트 되 었 습 니 다.또한 번역문 은 구 조 를 조정 하여 pre - commit 에 대한 간략 한 설명 을 추가 했다.최신 스 크 립 트 는 여기 있 습 니 다.
pre-commit hook
일부 테스트 코드 나 테스트 도 구 는 원 격 창고 에 제출 하지 말 아야 하기 때문에 코드 를 제출 하기 전에 심사 할 필요 가 있다.Git 은 많은 hooks 를 지원 합 니 다. hooks 는
$GIT-DIR/hooks
디 렉 터 리 에 있 는 스 크 립 트 로 특정한 이벤트 에서 실 행 됩 니 다.pre - commt hook 은 제출 하기 전에 실행 되 며 제출 할 코드 에 오류 가 있 는 지 확인 할 수 있 습 니 다.git hooks 에 대한 더 자세 한 설명 을 볼 수 있 습 니 다.우리 가 막 고 싶 은 건
위치 가 잘못된 보기 (Misplaced Views)
위치 가 잘못된 보 기 를 제출 한 적 이 있 습 니 다. 나중에 복구 하 시 겠 습 니까?
가끔 은 Xcode 가 너무 뜨 겁 고 여러 개의 모니터 (망막 vs 비 망막 문제...) 가 있 으 면 갑자기 물건 을 잘못 놓 기 쉽다.
해 봤 어 요.
인터페이스 builder 파일 내용 을 간단 한 grep 로 스 캔 하면 잘못된 보 기 를 발견 할 수 있 습 니 다.
Kiwi 나 Quick 같은 코드 라 이브 러 리 는 집중 테스트 를 할 수 있 고 개발 속 도 를 빠르게 할 수 있어 유용 하 다.
그러나 이들 은 절대 제출 되 어 서 는 안 된다. 그렇지 않 으 면 본의 아니 게 뭔 가 를 바 꾸 어 다른 모든 테스트 가 비활성화 되 고 심각 한 문 제 를 숨 길 수 있다.
테스트 파일 에서 fdescribe/fit/fcontext 와 다른 유사 한 것 을 찾 아야 합 니 다:
(fdescribe|fit|fcontext|xdescribe|xit|xcontext)
*Specs.swift
우 리 는 임시 저장 (staged) 의 변화 에 위 에 있 는 것 이 포함 되 어 있 는 지 확인 하기 만 하면 됩 니 다. 모든 파일 을 검사 하지 마 세 요. 개발 할 때 귀 찮 기 때 문 입 니 다.
다행히도 우 리 는
git diff-index -p -M --cached HEAD
과 grep '^+'
을 함께 사용 할 수 있다.최종 pre - commit. sh 파일:
#!/usr/bin/env bash
set -eu
failed=0
test_pattern='\b(fdescribe|fit|fcontext|xdescribe|xit|xcontext)\b'
if git diff-index -p -M --cached HEAD -- '*Tests.swift' '*Specs.swift' | grep '^+' | egrep "$test_pattern" >/dev/null 2>&1
then
echo "COMMIT REJECTED for fdescribe/fit/fcontext/xdescribe/xit/xcontext." >&2
echo "Remove focused and disabled tests before committing." >&2
echo '----' >&2
git grep -E "$test_pattern" '*Tests.swift' '*Specs.swift' >&2
echo '----' >&2
failed=1
fi
misplaced_pattern='misplaced="YES"'
if git diff-index -p -M --cached HEAD -- '*.xib' '*.storyboard' | grep '^+' | egrep "$misplaced_pattern" >/dev/null 2>&1
then
echo "COMMIT REJECTED for misplaced views. Correct them before committing." >&2
echo '----' >&2
git grep -E "$misplaced_pattern" '*.xib' '*.storyboard' >&2
echo '----' >&2
failed=1
fi
exit $failed
여기 서 최신 스 크 립 트 를 가 져 올 수 있 습 니 다.이 스 크 립 트 는 명령 행 과 macOS git 클 라 이언 트 에서 모두 사용 할 수 있 습 니 다.
hook 을 팀 에서 동기 화하 도록 합 니 다.
대부분의 응용 프로그램 은 팀 에서 만 든 것 이기 때문에 우 리 는 모든 git 창고 에 갈고리 (git hook) 를 설치 해 야 한다 고 생각한다.그러나 이것 은 git 의 작업 방식 을 사용 하 는 것 이 아 닙 니 다. 그러면 우 리 는 어떻게 해 야 합 니까?정 답: 심 볼 릭 링크 (symlinks) 를 사용 합 니 다.
내 가 맡 은 대부분의 프로젝트 는 boottstrap script 과 유사 한 것 이 있 는데, Carthage 를 불 러 오 거나 다른 준 비 를 하 는 데 사용 된다.
아래 의 간단 한 시작 스 크 립 트 (boottstrap script) 는 창고 에 갈고리 (git hook) 를 설치 하여 팀 전 체 를 동기 화 하 는 것 을 간단 하 게 할 수 있 습 니 다.
#!/usr/bin/env bash
# Usage: scripts/bootstrap
set -eu
ln -s ../../scripts/pre-commit.sh .git/hooks/pre-commit
이 스 크 립 트 는 pre - commit. sh 와 boottstrap 파일 이 창고 의 Scripts 폴 더 아래 에 있다 고 가정 합 니 다.
총결산
사전 제출 고 리 는 흔히 볼 수 있 는 오 류 를 막 기 위해 간단 한 방법 을 제공 해 주 었 다.
작가 의 이전 가작 iOS – 더 가 벼 운 AppDelegate – 서비스 디자인 을 위 한 FlowControllers 개선 iOS 응용 구조 Objective - C Runtime 의 동적 방법 분석 실천
저자 정보łocki 원문 링크:http://merowing.info/2016/08/...번역 계 력 보 숙 운 LeapCloud 팀UX 개발 자: Alex Sun 번역자 소개: iOS 개발 위 챗 공식 번호: MaxLeapyidongyanfa
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python 스크립트를 파라 메트릭으로 계산하기위한 드라이버 스크립트자체 제작된 Timer 라이브러리의 오차를 측정하기 위해 작성한 드라이버 스크립트입니다. 있다 python 스크립트를, 다른 조건으로 계산시키기 위한 드라이버 툴입니다. 어떻게 표현할 수 있는지 몰랐지만 WebDri...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.