두 개의 git 태그 사이에서 수정 된 모든 파일을 포함하는 아카이브 생성을 자동화하는 간단한 PowerShell 스크립트를 만들었습니다.PowerShell Git diff에서 매개 변수로 전달하기
내가 한 몇 가지 테스트에서 꽤 잘 작동하는 것처럼 보였지만, 오늘날 동료는 특정 파일을 추가하지 않는다고 불평했습니다. 나는 그것을 디버깅하기 시작했고, 나는 아주 이상한 행동을보고있다.
수정 된 파일을 나열하는 데 사용하는 명령은 git diff이며, PowerShell 명령의 인수 (문자열)의받는 사람과 보내는 사람 태그를 전달합니다.
param(
# Git tag or commit has from which we want the patch to start
[String] $FromTag,
# Path of the patch file
[String] $PatchFilePath,
# Git tag or commit hash where to we want the patch to update to (default HEAD, current checkout)
[String] $ToTag = "HEAD"
)
...
$modifiedFiles = git diff $FromTag..$ToTag --no-commit-id --name-only --diff-filter=ACMRT
...
테스트 결과 파일이 실제로 누락 된 것으로 나타났습니다. 다음과 같이 명령을 수동으로 실행하기로 결정했습니다.
git diff v041.3.2..v041.3.6 --no-commit-id --name-only --diff-filter=ACMRT
이 파일을 반환 한 사용자가 당황 스러웠습니다. 나는 다음을 시도했다 :
$FromTag = "v041.3.2"
$ToTag = "v041.3.6"
git diff $FromTag..$ToTag --no-commit-id --name-only --diff-filter=ACMRT
어떤 파일도 있지만 그 중 일부는 반환하지 않는다.
나는 다음 수정 된 모든 파일의 일부를 반환 변수로 나에게 동일한 결과를 제공git diff "v041.3.2".."v041.3.6" --no-commit-id --name-only --diff-filter=ACMRT
전화를 시도했습니다.
나는 마지막 명령을 "DOS"명령 프롬프트에서 실행하여 git 문제인지 확인하려고했지만 올바른 파일 집합을 반환합니다.
PowerShell에서 문자열을 전달할 때 git에서 입력을 해석하는 방법에 차이가있는 것처럼 보입니다.하지만 실제로 이유와 이유는 없습니다.
여기에 관심있는 사람들의 전체 스크립트입니다 : PowerShell을에서 https://gist.github.com/Gimly/b865b0ed09f0f9fe13d12f6b0137ecfb
그냥 테스트를 위해 http://itackoverflow.com/a/9934012/6309 에서처럼 자식을 선언 할 수 있습니까? – VonC