From: Beat Bolli Date: Sat, 27 Apr 2024 22:02:35 GMT Subject: Re: Use of Git with local folders Message-ID: In-Reply-To: On 27.04.2024 19:14, Junio C Hamano wrote: > Beat Bolli writes: > >> 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. > I guess my brain just implied from those daily copies that there was just one commit at the end of the day. Your explanation below makes more sense. > 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 ALL > > to 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" > done > > to 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-04 > > should give us what happend on the first day, what happened on the > third and fourth day, etc., as expected. > >