git log를 컬 명령으로 파이프하는 방법

git log를 컬 명령으로 파이프하는 방법

curl내 목표는 명령의 출력을 페이로드로 사용하여 curl실행하는 것입니다. 이 둘은 별도로 작동하지만 둘을 하나로 병합할 수는 없습니다.

이것은 이전 버전 이후 GIT 저장소의 변경 사항을 인쇄하는 첫 번째 명령입니다.

git log --pretty=oneline HEAD...$(git tag -l | tail -n2 | head -n1)

좋아, 이제 어떻게든 이 출력을 이 컬 문장에 도입하고 싶습니다.

curl -vX POST --data-urlencode 'payload={"text": "< GIT LOG OUTPUT >"}' https://example.com

이 두 명령을 한 줄로 전송할 수 있는 방법이 있습니까?

답변1

다음과 같이 시도해 볼 수 있습니다.

curl -vX POST --data-urlencode \
    "payload={\"text\":\"`git log --pretty=oneline HEAD...$(git tag -l | tail -n2 | head -n1) | tr '\n' ',' | sed 's|,$||'`\"}" \
    https://<your-remote>

답변2

jo올바르게 인코딩된 JSON을 생성 하려면 다음을 수행하세요.

curl -vX POST --data-urlencode \
  payload="$(
    jo text="$(
      git log --pretty=oneline HEAD...$(git tag -l | tail -n2 | head -n1)
    )"
  )"

여기서 가장 중요한 것은 명령입니다.

jo text="$( git log ... )"

그러면 키가 포함된 JSON 문서가 출력됩니다 text. 이 키의 값은 출력 데이터가 되며 git log개행 문자는 대체 \n되고 다른 문자는 올바른 JSON 인코딩 해당 문자로 대체됩니다.

jo대부분의 Unices에서 패키지 관리자를 통해 쉽게 사용할 수 있습니다.

관련 정보