Неправильный формат git diff при хранении в переменной Bash - PullRequest
0 голосов
/ 17 апреля 2019

Я хочу рассчитать это в файле bash

files : {
          {
             file {
                     name: "Bla,java"
                     line_changes : [45,146,14]
                  }
          } 
          {
             file {
                     name: "Foo.java"
                     line_changed : [7,8,9,10]
                  }
          }
       }

так что у меня есть

gitOutput=$(git diff origin/master..origin/mybranch)
echo $gitOuput

Моя проблема:

Вывод sooo, не отформатирован.

Все в одной строке

Я не могу разобрать это логически ...

Как Split by \ n или split "diff --git" и т. Д.

Также нет новой строки. Поэтому, если они есть, это не имеет смысла.

Итак, я хочу знать, есть ли какой-нибудь красивый формат для git diff

[ОБНОВЛЕНИЕ] * * тысяча двадцать один

Я попробовал этот странный подход

git diff origin/master..origin/mybranch > data.txt
data=$(cat data.txt)

Вывод: Data.txt абсолютно идеален но данные вар. все испорчено ...

это что-то связанное с IFS ???

1 Ответ

2 голосов
/ 17 апреля 2019

Краткий ответ: вы должны добавить кавычки:

gitOutput="$(git diff origin/master..origin/mybranch)"
echo "$gitOuput"

так, чтобы возврат строки сохранялся как есть. Обычно это то, что вы хотите сделать в общем случае, когда переменные в оболочке.

Подробное объяснение использования цитат см. https://unix.stackexchange.com/questions/68694/when-is-double-quoting-necessary

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...