보고서 실행을 위한 조직 모드, Git 로그 및 조직-바벨

개인 지식 관리 시스템 공급



Using a File as a Template in Emacs 에서 상사가 저에게 작성을 위임한 주말 보고서에 대해 썼습니다. 해당 보고서를 작성하는 데 도움이 되는 스크립트 중 하나를 조금 확장하고 싶습니다.

스크립트



다음 스크립트는 주말 보고서를 작성하는 데 도움이 되는 도구 중 하나입니다. Forem code base만 고려합니다.

cd ~/git/forem ;
echo "Authored PRs Merged Since 2022-03-25\n"
git log --since=2022-03-25 \
  --format="%h — %s %an, (%cs) %d" \
  --author="(Suzanne A|Jeremy F|Arit A|Dwight S|Anna B)"\
  | rg "— ([^\(]+) \(\#(\d+)\) ([^,]+)," --only-matching -r '- $1 :: forem/forem#$2 $1' \
  | sort
echo "\nCo-authored PRs Merged Since 2022-03-25\n"
git log --since=2022-03-25 \
  --grep="Co-authored-by: (Suzanne A|Jeremy F|Arit A|Dwight S|Anna B)" \
  --format="%(trailers:key=Co-authored-by,separator=%x2C,valueonly=true) :: %s" \
  | rg "^([^<]+) <.*> :: ([^\(]+) \(\#(\d+)\)" --only-matching -r '- $1 :: forem/forem#$3 $2' \
  | sort


위의 스크립트에는 두 개의 섹션이 있습니다.
  • 첫 번째 섹션은 콘텐츠 경험 포드의 구성원이 작성한 커밋입니다.
  • 두 번째 섹션은 포드 구성원이 PR에 하나 이상의 커밋을 제공했지만 초기 작성자가 아닌 커밋입니다. Git은 이들을 공동 저자로 등록합니다.

  • 즉, 스크립트는 우리 팀이 일주일 동안 제공하는 데 도움이 된 코드를 보여줍니다.

    해당 스크립트를 어디에 보관해야 합니까?



    1~2주 동안 위 스크립트의 간단한 버전을 실행했습니다. 내 쉘 명령 기록을 검색하고 올바른 것을 찾은 다음 날짜를 조정합니다.

    그것은 효과가 있었지만 그 작업 흐름에 의존하지 않는 것이 좋습니다. Content Experience Pod의 Org-Roam 노드에 스크립트를 추가했습니다. 내 PKM 시스템의 일부인 문서.

    해당 문서에서 다음과 같이 표시됩니다.

    #+Begin_src sh :results output :cmdline (org-read-date)
      cd ~/git/forem ;
      echo "Authored PRs Merged Since $1\n"
      git log --since=$1 \
        --format="%h — %s %an, (%cs) %d" \
        --author="(Suzanne A|Jeremy F|Arit A|Dwight S|Anna B)"\
        | rg "— ([^\(]+) \(\#(\d+)\) ([^,]+)," --only-matching -r '- $3 :: forem/forem#$2 $1' \
        | sort
      echo "\nCo-authored PRs Merged Since $1\n"
      git log --since=$1 \
        --grep="Co-authored-by: (Suzanne A|Jeremy F|Arit A|Dwight S|Anna B)" \
        --format="%(trailers:key=Co-authored-by,separator=%x2C,valueonly=true) :: %s" \
        | rg "^([^<]+) <.*> :: ([^\(]+) \(\#(\d+)\)" --only-matching -r '- $1 :: forem/forem#$3 $2' \
        | sort
    #+end_src
    
    


    조직 모드Babel 구문을 사용하여 작성했기 때문에 약간 다릅니다.

    첫 번째 줄(예: #+Begin_src sh :results output :cmdline (org-read-date) )은 다음과 같이 선언합니다.
  • sh 구문이 있는 코드 블록
  • 결과를 원시로 쓰기 위해output
  • (org-read-date) 함수의 결과를 $1로 스크립트
  • 에 전달하기 위해

    나머지 줄은 내가 이전에 쓴 것과 거의 동일합니다. 2022-03-25의 "하드 코딩된"날짜 대신 org-read-date 함수의 결과를 사용하고 있습니다.

    보고서를 실행하기 위해 해당 코드 블록에 포인트(예: 커서)를 설정하고 C-c C-c를 입력하면 Emacs가 Babel 블록을 평가합니다.

    먼저 org-read-date 함수를 호출하여 날짜를 선택하라는 메시지를 표시합니다. 그런 다음 쉘 명령을 실행합니다. 그리고 Babel 블록 바로 아래에 결과를 출력합니다.

    거기에서 우리 팀이 일주일 동안 수행한 작업의 한 측면을 볼 수 있습니다.

    결론



    Emacs, 특히 Org-Mode를 채택하기 전에는 이것을 어디에 둘지 허둥지둥했을 것입니다. 내 쉘 역사에 남아 있었을 것입니다.

    그러나 이제 이것을 사람들과 연결하고 덜 일시적인 파일에 작성하고 그것에 대해 썼기 때문에 나는 그것의 존재와 그것이 한 일을 모두 더 잘 기억할 것입니다.

    Git의 커밋 트레일러와 커밋의 공동 작성자를 찾는 방법에 대해 배웠습니다. 다른 사람이 끌어오기 요청을 병합하도록 돕기 위해 사람들이 수행하는 작업을 표시하는 데 도움이 됩니다.

    또한 Babel에서 실행 중인 스크립트로 인수를 전달하는 방법에 대해 조금 더 배웠습니다.

    마지막으로 이 블로그 게시물을 내 PKM 시스템에 작성했기 때문에 게시된 블로그 게시물에서 Content Experience Pod에 대한 참조가 있습니다.

    즉, 내가 쓴 스크립트의 세부 사항을 찾을 수 있도록 빵 부스러기를 만드는 데 최선을 다하고 있습니다.

    좋은 웹페이지 즐겨찾기