잘못된 커밋을 방지하고 Lefthook으로 코드를 테스트하고 Flutter와 통합하는 방법

4125 단어 gitflutter
Lefthook은 우리의 커밋에 더 많은 확신을 주는 도구입니다. Flutter, Go, Ruby 및 기타 여러 가지 프로그래밍 언어 및 프레임워크와 함께 작동하며 lint 및 테스트와 같은 일부 작업도 실행할 수 있습니다. 작동하도록 구성하십시오.

시작하려면 OS에 따라 다르며 Ubuntu 및 Debian과 같은 Linux 배포판에는 두 가지 다른 방법이 있습니다.
  • curl 사용:

  • curl -1sLf 'https://dl.cloudsmith.io/public/evilmartians/lefthook/setup.deb.sh' | sudo -E bash
    sudo apt install lefthook
    


    curl이 설치되어 있지 않으면 다음을 입력하십시오. sudo apt install curl
  • Snap 사용:
    다음을 입력하기만 하면 됩니다. snap install --classic lefthook

  • macOS를 사용하는 경우 Homebrew 으로 시도해 볼 수 있습니다. brew install lefthook
    이 단계 후에 컴퓨터에 레프트후크가 설치되어 있어야 합니다. 사용 방법을 살펴보겠습니다.

    프로젝트에서 사용하려면 터미널로 이동한 다음 루트로 이동해야 합니다. 그런 다음 lefthook install를 입력하고 lefthook.yml라는 파일을 프로젝트에 만들어야 합니다. 이 예에서는 Flutter 프로젝트를 실행하고 명령을 실행하면 아래와 같은 결과를 볼 수 있습니다.


    pre-commit , pre-pushcommit-msg 와 같은 커밋 프로세스의 특정 순간에 몇 가지 명령을 설정할 수 있습니다. 이러한 명령은 내부에 있는 커밋 프로세스에 따라 실행됩니다. 예를 보여 드리겠습니다.

    pre-commit:
      parallel: true
      commands:
        tests:
          run: flutter test
        analyze:
          run: flutter analyze
    


    위의 이 코드 블록에서는 커밋 프로세스가 완료되기 전에 몇 가지 작업을 병렬로 실행하고 있습니다. 이 경우 Flutter 테스트를 실행하고 분석하고 커밋은 이러한 작업이 완료된 경우에만 완료됩니다. 예시

    pre-push:
      parallel: true
      commands:
        tests:
          run: flutter test
    


    이제 위의 이 코드 블록을 사용하면 푸시 프로세스가 시작된 경우에만 작업이 실행됩니다. 이 경우 Flutter 테스트를 실행하고 있으며 모든 테스트가 성공적으로 완료되면 커밋만 수행됩니다.

    마치려면 commit-msg 블록을 사용하는 방법을 알아보겠습니다. 우리의 경우 기존 커밋 사양을 기반으로 커밋 메시지를 확인합니다. 이 개념에 대해 모르는 경우 click here 할 수 있으므로 이동하겠습니다. , 이 예에서는 bin라는 폴더를 만들고 그 안에 commit_message.dart라는 파일을 만들어야 합니다. 결과는 다음과 같아야 합니다.



    내부 bin/commit_message.dart 파일에 아래 코드를 삽입할 수 있습니다.

    import 'dart:io';
    
    dynamic main() {
      final rootDir = Directory.current;
      final commitFile = File("${rootDir.path}/.git/COMMIT_EDITMSG");
      final commitMessage = commitFile.readAsStringSync();
    
      final regExp = RegExp(
        r'(bugfix|feature|hotfix|none|chore|refactor|doc|style|test)(\(\w+\):\s?)(\[\w+-\d+])(.+)',
      );
    
      final valid = regExp.hasMatch(commitMessage);
      if (!valid) exitCode = 1;
    }
    
    


    이 파일은 기본적으로 커밋 메시지를 받은 다음 정규식을 전달하여 기존 커밋과 관련이 있는지 확인하고 마지막으로 lefthook.yml 파일에 넣을 수 있습니다.

    commit-msg:
      commands:
        validate:
          run: flutter pub run bin/commit_message.dart
    


    이를 통해 메시지 커밋이 예상한 것과 일치하는지 확인하기 위해 생성된 파일을 실행합니다. 제 경우 최종 결과는 다음과 같습니다.

    pre-commit:
      parallel: true
      commands:
        tests:
          run: flutter test
        analyze:
          run: flutter analyze
        lint_code:
          glob: '*.dart'
          run: dart fix --dry-run lib && git add .
        format_code:
          glob: '*.dart'
          run: flutter format {staged_files} && git add .       
    
    commit-msg:
      commands:
        validate:
          run: flutter pub run bin/commit_message.dart  
    
    


    지금까지 이 도구를 통합하여 명확한 메시지로 커밋을 보다 안전하고 깨끗하게 유지하는 방법을 배웠습니다. 마음에 드셨기를 바라며 다음 기사에서 뵙겠습니다.

    Lefthook repo

    좋은 웹페이지 즐겨찾기