shell - How to archive modified files between two git branch using command git archive? -
i use such command archive modified files between master , head:
git archive --format=zip -o diff_archive.zip head `git diff --name-only master..head`
however, if there no modified file, files in working copy archived, there way avoid this?
now,what use dummy file, , change command this:
git archive --format=zip -o diff_archive.zip head dummy_file `git diff --name-only master..head`
it solves problem, not elegantly, dummy_file archived.
assuming don't mind fact operation not @ safe oddly named files or include whitespace. can following:
files=$(git diff --name-only master..head) git archive --format=zip -o diff_archive.zip head ${files:-no_such_file}
and git archive
error on non-existent file. (this uses use default value
version of parameter expansion
.)
if rather avoid error use git diff --exit-code
:
if ! _files=$(git diff --exit-code --name-only master..head); git archive --format=zip -o diff_archive.zip head $files fi
(this needs !
invert exit code because git diff
(like diff
itself) exits 1
when there differences , 0
when there aren't any).
Comments
Post a Comment