I have a multiline variable $foo
, and want to use it to git tag my latest commit. I would like those line breaks to show up in git (/github). I tried
git tag -a v$MAJVER.$MINVER.$PATVER.$HOTVER -m $"$foo"
How can I make it (via bash) such that line breaks survive the push?
CodePudding user response:
Just use simple double-quoting. If that isn't working, it's something in the value.
If what's concerning you is the output of the commit, that is just a report.
Go look at the actual log.
$: ls -l
total 4
-rwxr-xr-x 1 P2759474 1049089 474 Nov 2 14:22 tst
$: mv tst new
$: git status
On branch tst
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
deleted: tst
Untracked files:
(use "git add <file>..." to include in what will be committed)
new
no changes added to commit (use "git add" and/or "git commit -a")
$: foo="
testing
multiline
git
commit
message
"
$: git add .
warning: LF will be replaced by CRLF in new.
The file will have its original line endings in your working directory
$: git commit -m "$foo" # keeps newlines, but shows without them
[tst 74428e6] testing multiline git commit message
1 file changed, 0 insertions( ), 0 deletions(-)
rename tst => new (100%)
$: git log -1
commit 74428e60d830c417ded3ad2c331f02e73319b862 (HEAD -> tst)
Author: Paul Hodges <[email protected]>
Date: Thu Nov 3 10:20:33 2022 -0500
testing
multiline
git
commit
message
The same works with tags, but you have to know how to get the data back out.
$: git tag -a example -m "$foo"
$: git tag -l
example
$: git tag -n
example testing
$: git tag -n99
example testing
multiline
git
commit
message
You have to tell it how many lines of the message you are willing to have it show you. The default is 1.