Re: Use of Git with local folders
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Apr 27, 2024, 17:14 UTC
- Message-ID
- <xmqqv842683i.fsf@gitster.g>
- In-Reply-To
- <30c5852e-c8db-433c-871b-1ae5c87034dc@drbeat.li>
Beat Bolli <dev+git@drbeat.li> writes:
Show 10 quoted lines
> What would work in my opinion is this, if I understand you correctly: > > 1. In the Git repo of day 1, remove all files except for the .git > folder. This is to make sure ... > 4. Continue from step 1 for each remaining day. > > This will result in one repository that has one commit per day. Going > forward, you'd probably want to commit more often so that your commits > comprise a meaningful unit of work instead of arbitrary day > boundaries.
Hmph, perhaps I am misunderstanding things, but I didn't read in the original or the follow-up from the OP any wish to "squash" a day's worth of activities into a single commit each.
Let me make sure what I understood from the follow-up from the OP is not too far away from the reality. I thought the day's activity is
* The whole "repository + working tree" from day (N-1) is copied into a new "repository + working tree" for day N, to let the user to play in. Then the user hacks away, creating commits on top of the HEAD.
So there may be a directory structure
- FBustamante/
- Day-01/
- .git/
- COPYING
- ...
- Day-02/
- .git/
- COPYING
...
- Day-10/
- .git/
- COPYING
- ...but Day-10/.git has ALL the history for everything. Day-10/.git is a superset of Day-09/.git, which in turn is a superset of Day-08/.git, etc. all the way down to Day-01/.git/.
If that is the case, and if the end state of each day needs to be given a "label" so that it is easily discoverable, then what I would do would be something like:
$ cd FBustamante
$ cp -a Day-10 ALLto first prepare an exact copy of Day-10 in ALL, and then
$ for d in Day-??
do
rev=$(git -C "$d" rev-parse HEAD)
git -C ALL tag "$d" "$rev"
doneto go in to each day's repository to grab its HEAD, and make a tag for that commit in the ALL repository.
Then doing the usual things like
$ cd ALL
$ git log Day-01
$ git log Day-02..Day-04should give us what happend on the first day, what happened on the third and fourth day, etc., as expected.