Я пытаюсь реализовать Git cherry pick для нескольких идентификаторов коммитов одновременно. Но он терпит неудачу, или это не то, как его следует использовать.
Я пытаюсь использовать команду bash отсюда: { ссылка }
#!/bin/bash
if [ -z $1 ]; then
echo "Equivalent to running git-cherry-pick on each of the commits in the range specified.";
echo "";
echo "Usage: $0 start^..end";
echo "";
exit 1;
fi
git rev-list --reverse --topo-order $1 | while read rev
do
git cherry-pick $rev || break
done
Я создал цель для муравья, как это:
<target name="git_multi_cherry_pick">
<echo message="START: MultiMerge"/>
<exec executable="C:\Program Files\Git\bin\bash.exe" osfamily="windows" failonerror="true">
<arg value="${gitMultiCherryPick}"/>
<arg value="${gitCommitIds}"/>
</exec>
<exec executable="/bin/bash" osfamily="unix" failonerror="true">
<arg value="${gitMultiCherryPick}"/>
<arg value="${gitCommitIds}"/>
</exec>
</target>
И я использую AntExecutor
из Java для вызова вышеуказанной цели. AntExecutor code can be found here - https://github.com/asciidoctor/asciidoctor-ant/blob/master/src/test/java/org/asciidoctor/ant/AntExecutor.java
Map<String, String> propertiesMap = new HashMap<>();
propertiesMap.put("gitMultiCherryPick", "git-multi-cherry-pick.sh");
propertiesMap.put("gitCommitIds", "204a3e81712000d09a2794cc4ef1d090c4280f4e,9c5242d6a15b14032e9fc1f408be3c91026b1e1f");
List<String> sf_build = AntExecutor.executeAntTask("FullPath \\resources\\build\\build.xml",
"git_multi_cherry_pick", propertiesMap);
Но с этой ошибкой ничего не получается:
The ' characters around the executable and arguments are
not part of the command., 204a3e81712000d09a2794cc4ef1d090c4280f4e,9c5242d6a15b14032e9fc1f408be3c91026b1e1f, git-multi-cherry-pick.sh, fatal: ambiguous argument '204a3e81712000d09a2794cc4ef1d090c4280f4e,9c5242d6a15b14032e9fc1f408be3c91026b1e1f':
Я думаю, что это не то, как мы передаем commitIds. Кто-нибудь раньше использовал вышеописанный bash скрипт?