From: Dieter S. <di...@sc...> - 2021-04-25 15:57:03
|
Dear all, first, erich, thank you for your kind remarks on my notes! git is just a tool, and the project/users should dictate its usage. So if you find a way which suits you, then this is the way to do it. On the current setup: If you have all the releases in a file tree, you can use all kinds of (shell) tools to compare/find and do not depend on git. It uses a bit more disk space than branches, but nowadays that should be no big issue. Using git tricks (like I demonstrated) is a bit of a vendor-lock-in. other ideas: * whoever is not interested in the releases could do a "sparse checkout" and only get trunk/. * if there is need for tags, those can be introduced anytime. kind regards, dieter On 25.04.21 12:10, Erich Wälde wrote: > Dear AmForthers, > > > despite Dieters excellent demonstration of how to deal with branches: > >> Dear Erich, >> One of the easiest ways to look for the evolution of a file is >> $ git log --all --graph >> This lists all commits, where was changed, and rather nice ascii-art graphs. >> The --all flag looks into all branches. >> If you want to do more sophisticated actions per file/branch, you will have to use "git plumbing" functions. >> Plumbing functions are for low-level tasks, and are more appropriate for scripts. >> For example: >> file=tools/amforth-upload.py >> for branch in $(git for-each-ref --format='%(refname)' refs/heads); do >> br=$(echo $branch | sed "s/.*///") >> echo $br $(git show $br:$file | md5sum | cut -f1 -d" ") ; done >> done >> produces a list of md5 sums for each branch where file occurs. >> git for-each-ref --format='%(refname)' refs/heads : produces a list of branches >> >> git show : : prints the contents of the file at branch >> The rest of the code is just for nicer outputs. >> There are a multitude of methods to perform a given task in git. >> Sometimes there are just too many flags and commands... >> Kind regards, >> Dieter > > I found another reason to stay with the releases folder as a > folder. > > I do have quite a collection of "projects" using AmForth. Since > they were created at diffent times and for different purposes, > they point to specific releases of AmForth most of the time. > Just a quick look through one of my trees: >> ew@ceres:~/Forth/atmega2 18 > find . -iname makefile -exec grep '^AMFORTH=' {} \; | sort -u >> AMFORTH=~/Forth/amforth/releases/4.0/core >> AMFORTH=~/Forth/amforth/releases/5.0/core >> AMFORTH=~/Forth/amforth/releases/5.5/core >> AMFORTH=~/Forth/amforth/releases/5.5/core >> AMFORTH=~/Forth/amforth/releases/6.3 >> AMFORTH=~/Forth/amforth/releases/6.4 >> AMFORTH=~/Forth/amforth/releases/6.6 >> AMFORTH=~/Forth/amforth/releases/6.8 >> AMFORTH=~/Forth/amforth/releases/6.8 >> AMFORTH=~/Forth/amforth/releases/6.9 >> AMFORTH=~/Forth/amforth/trunk > This option ceases to exist with branches. I am of course not > willing to check out the correct Version, even automatically, in > order to build AmForth just now in just this folder. > > Yes, yes. I know, it is not git'ish. > > > In order to experiment I created another repository at > https://git.sr.ht/~amforth/code-tree > > These commands were used to create it: >> cd path/to/your/favourite/place >> mkdir amforth.git >> cd amforth.git >> svn2git https://svn.code.sf.net/p/amforth/code --rootistrunk >> ls >> # releases/ trunk/ >> du -sm . >> # 569 . >> git remote add origin gi...@gi...:~amforth/code-tree >> git push --set-upstream origin master > sourcehut helpfully points out, that it does not see a License > file :) > > > So we see unfolding that "migrations" are possibly more involved > than anticipated. The true effort involved remains unknown until > you actually made it. > > So, any other ideas? > Move the releases folder into what is now trunk? > Move the external, bit rotting amforth-community repository into > what is now trunk, too? > > > > Cheers, > Erich > > > > |