Есть ли способ получить путь к корневому каталогу файла при запуске git diff против master? - PullRequest
2 голосов
/ 02 апреля 2019

Я пытаюсь получить путь к корневым папкам файлов, которые были изменены в коммите при запуске diff с master. Дескать, я на ветке feature/DeploymentReady. При запуске diff для master я пытаюсь получить путь к родительской папке, а не путь к файлу внутри папки.

У меня есть структура папок, такая как:

ParentFolder

  • Folder1
    • ChildFolder1
      • Text1.txt
      • Text2.txt
  • Folder2
    • ChildFolder2
      • Text3.txt
      • Text4.txt

Итак, если я что-то изменю в Text1.txt, мне нужен путь Folder1, но я получаю путь ChildFolder1.

Я попробовал это: git diff --name-only HEAD^

Здесь указывается путь ко всем файлам , которые были изменены в feature/DeploymentReady ветви.

Я также попытался git diff --dirstat=files,0 HEAD~1 | sed 's/^[ 0-9.]\+% //g' со ссылкой на ответ здесь [ссылка] git diff - только показать, какие каталоги изменились

Вышеуказанное решение служит половине цели. Это дает мне родительскую папку файла, который изменился, но мне нужен путь к корневой папке.

Я ожидаю получить путь к корневой папке, но получаю путь к родительской папке.

Ответы [ 2 ]

0 голосов
/ 02 апреля 2019

В качестве обходного пути, сейчас я использую git diff --dirstat=files,0 HEAD~1 | sed 's/^[ 0-9.]\+% //g'| cut -d'/' -f1-6 для перемещения вверх по каталогу. Диапазон f1-6 применим к моей фактической структуре папок.

0 голосов
/ 02 апреля 2019

Чем это может отличаться от добавления имени файла?

Если вы можете вернуть project/folder1/childfolder1/, вы просто добавите имя файла в конец строки.

...