On Fri, 20 Sep 2013 09:54:57 -0700 (PDT) Gabriel Marchesan Almeida <[email protected]> wrote:
> Konstantin, me again. > > I have realized that when running your commands directly on prompt > command, they work pretty fine and I have an output on /tmp/valid, > which is exactly the TAG i want to keep. > > However when putting the command in a bash script, I have always > empty /tmp/valid. > > I am having problems to figure out where the problem is coming from. A couple of points: First, remove the subshell (...) which is in front of | sort -u ... as it's not really needed -- a simple pipeline would do just fine: git rev-list --branches | while read c; do git tag --contains $c; done | sort -u >/tmp/valid Next, just verify every part of the pipeline works as intended, that is: 1) Place a call git rev-list --branches before the pipeline and see if it prints a set of SHA-1 names. 2) Place a call to `git tag --list` before the pipeline to verify the tags are there. 3) Replace `git tag --contains $c` in the `while` body with mere `echo $c` and see if that works. Next, it's almost always advisable to run the script with the "fail on errors" and "fail on undefined variables" flags turned on, which is done by executing set -e -u in the script. This helps detect subtle errors. Next, while `set -e -u` is usually a must, this does not prevent faulty pipelines from failing (a really brain-dead property of the standard Unix shell). If (and only if) you're using bash, make it fail on faulty pipelines by running `set -o pipefail` and hence the recommended thing to include in the script is set -e -u -o pipefail This way bash will die with an error message as soon as any program it calls anywhere exits with a non-error exit code. Last, in scripts, never hard-code names of temporary files -- use mktemp instead: FNAME=`mktemp git.XXXXXXXX` trap 'rm -rf "$FNAME"' TERM INT EXIT ... sort -u >"$FNAME" ... ... grep -f "$FNAME" > > Small area of my script. > > http://screenpresso.com/=zAske Next time please use a pastebin service [1] like, uh, pastebin.com, or https://gist.github.com/ and so on -- they're in abundance. There's no need to use graphics to present text. 1. http://en.wikipedia.org/wiki/Pastebin -- You received this message because you are subscribed to the Google Groups "Git for human beings" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
