Reputation: 13195
I have a git post receive hook that will trigger a build on my build system. I need to create a string of the form "$repo-name + $branch" in the hook script.
I can parse the branch, but how can I get the repository name from git?
Thanks!
Upvotes: 26
Views: 9541
Reputation: 809
If one is using Gitolite, the GL_REPO
variable is available in the post-receive
environment by default.
Upvotes: 0
Reputation: 467211
The "repository name" isn't a well-defined idea in git, I think. Perhaps what would be most useful is to return whatever.git
in the case of a bare repository or whatever
in the case of a repository with a working tree. I've tested that this bit of Bourne shell deals with both cases properly from within a post-receive
hook:
if [ $(git rev-parse --is-bare-repository) = true ]
then
REPOSITORY_BASENAME=$(basename "$PWD")
else
REPOSITORY_BASENAME=$(basename $(readlink -nf "$PWD"/..))
fi
echo REPOSITORY_BASENAME is $REPOSITORY_BASENAME
Update: if you want to remove the .git
extension in the bare repository case, you could add a line to the first case to strip it off:
REPOSITORY_BASENAME=$(basename "$PWD")
REPOSITORY_BASENAME=${REPOSITORY_BASENAME%.git}
Upvotes: 43
Reputation: 33769
You could do git rev-parse --show-toplevel
, which will give you the path of the top-level directory, and pull the name out of that (reponame.git is conventional for remotely-accessible repos).
$PWD
might also have the same information, but I'm unsure.
Upvotes: 0
Reputation: 16185
You can inspect $GIT_DIR, or $GIT_WORK_TREE and get the repo name from there.
Upvotes: 1