Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

git diff on a bare repo

I wanna see how much a repo changed in the last month on gitlab server side

cd /path/to/my/bare/repo.git/
git --git-dir . diff --shortstat "@{1 month ago}"
fatal: Unable to read log 'logs/refs/heads/master': No such file or directory

However it works fine in local checkout-ed working branch.

Is there a way to do this without too much hassle?

To avoid X-Y problem: I wanna run statistics through hundreds of repos on a Gitlab server

like image 576
λq_ Avatar asked Sep 30 '22 23:09

λq_


1 Answers

Try and make sure, when diff'ing in a bare repo, to specify two commits (or diff would default to the working tree, which doesn't exist in a bare repo).

You don't need --git-dir .

However, using date when specifying a revision wouldn't work, as it is based on logs/refs, which doesn't exist in a bare repo

<refname>@{<date>}, e.g. master@{yesterday}, HEAD@{5 minutes ago}

A ref followed by the suffix @ with a date specification enclosed in a brace pair (e.g. {yesterday}, {1 month 2 weeks 3 days 1 hour 1 second ago} or {1979-02-26 18:30:00}) specifies the value of the ref at a prior point in time.
This suffix may only be used immediately following a ref name and the ref must have an existing log ($GIT_DIR/logs/<ref>).

like image 173
VonC Avatar answered Oct 03 '22 02:10

VonC