home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.misc      General topics about computers not cover      21,759 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 21,570 of 21,759   
   Ben Collver to All   
   From Git To Fossil SCM (1/4)   
   19 Nov 25 17:11:27   
   
   From: bencollver@tilde.pink   
      
   From Git to Fossil by Lucio Albenga   
   ===================================   
      
   Published on 2025-11-12   
      
   People at Git has started to work on a proposal to make the Rust [1]   
   programming language mandatory. I don't like Rust and, above all, I   
   don't like its community of little extremist characters who are trying   
   to make everyone swallow their crap by rewriting projects that have   
   been working for decades, doing social media brigading, and other nice   
   little gems worthy of any tiny group with totalitarian delusions.   
   That's why when I see that a project aims to "force" the use of or   
   the switch from C to Rust, to the extent of my possibilities, I flee   
   from it as if I were pursued by the Balrog of the Lord of the Rings   
   with his whip.   
      
   I'm old enough to have used (or tested) many version control systems:   
   RCS (Revision Control System), CVS (Concurrent Version System), SVN   
   (Subversion), HG (Mercurial), BZR (Bazaar), and the aforementioned   
   Git, which means I have no problem in switching again, so I started   
   to think about a Git substitute for my personal projects.   
      
   The options were to go back to one of the already known or look at   
   something else, and I remembered Fossil. I started looking over the   
   source code and reading the official documentation [2] to learn its   
   features, its dependencies, how to install and configure it, etc.,   
   and I noticed it had many things I like:   
      
   * It's made in C (although it uses some js and tcl for its web   
     functionality) and is a small and efficient program that consumes   
     few hardware resources.   
      
   * It's simpler to use and it feels more natural (at least for   
     someone who knows other systems such as Subversion) because it   
     does not contain overkill functionalities such as the staging   
     area, which may be useful in large and complex projects such as   
     the Linux kernel, but for me they have no practical use.   
      
   * It allows you to self-host a server on your own quickly and   
     easily because it is already prepared for it. In fact it has a   
     web server and a web interface with version control views, wiki,   
     tickets, etc. On the other hand, with Git you have to use an   
     external software such as GitLab, Gitea or Forgejo, and each one   
     of them is at least one extra software dependency.   
      
   * Commit messages don't use email addresses, they use user names so   
     if you have a public repository you don't have to be worried   
     about spam and you don't need a specific email address for this   
     use only.   
      
   * It's interoperable with Git in the sense that if there is a need   
     to change a repository back to Git you can do it and it also   
     supports two-way synchronization between a Fossil repository and   
     a Git [3] one (this is the functionality used by Fossil and   
     Sqlite projects to manage their GitHub mirrors).   
      
   Taking all this into account, I decided to install Fossil and switch   
   my projects from Git. Below you'll see how to do it.   
      
   Installing Fossil   
   =================   
      
   The first step is to install Fossil and it's quite likely that the   
   package manager of your operating system already has it available:   
      
   +-------------------------------------------------------------------+   
   | sudo apt install fossil # Devuan GNU+Linux                        |   
   | pkg install fossil      # FreeBSD                                 |   
   +-------------------------------------------------------------------+   
      
   Once your package manager ends the installation you can check its   
   availability with the following command:   
      
   +-------------------------------------------------------------------+   
   | fossil version                                                    |   
   +-------------------------------------------------------------------+   
      
   The command above should return something like the following:   
      
   +-------------------------------------------------------------------+   
   | This is fossil version 2.21 [3c53b6364e] 2023-02-26 19:24:24 UTC  |   
   +-------------------------------------------------------------------+   
      
   Importing Git repositories   
   ==========================   
      
   Fossil's documentation [4] has the following example to export a Git   
   repository and import it as a Fossil repository:   
      
   +-------------------------------------------------------------------+   
   | cd repository_name                                                |   
   | git fast-export --all | fossil import --git repository.fossil     |   
   +-------------------------------------------------------------------+   
      
   I did it differently because I wanted to adjust some things to have   
   the imported repositories "right". As I have several repositories I   
   created two different folders, one, git-exported, to store the   
   exported repositories and another one, fossils, to store the new   
   Fossil repositories:   
      
   +-------------------------------------------------------------------+   
   | mkdir ~/git-exported                                              |   
   | mkdir ~/fossils                                                   |   
   +-------------------------------------------------------------------+   
      
   Now you can geit into each Git repository folder and export it:   
      
   +-------------------------------------------------------------------+   
   | cd repository                                                     |   
   | git fast-export --all > ~/git-exported/repository.export          |   
   +-------------------------------------------------------------------+   
      
   Once you have exported all your Git repositories you should go inside   
   the ~/fossils folder and import them one by one with the command:   
      
   +-------------------------------------------------------------------+   
   | fossil import --git \                                             |   
   |        --rename-master trunk \                                    |   
   |        --attribute "your@mail.com your_username" \                |   
   |        repository_name.fossil ~/git-exported/repository.export    |   
   +-------------------------------------------------------------------+   
      
   The '--rename-master trunk' option renames your Git master branch as   
   trunk in your new Fossil repository. Fossil, like other version   
   control systems such as Subversion, uses trunk as the name of the   
   master branch. If you are among the unfortunate ones who have their   
   master branch named as "main" this option is not for you and you   
   should check Fossil's documentation if you want to rename it.   
      
   The '--attribute "your@mail.com your_username"' option changes the   
   email address "your@mail.com" from Git commits to "your_username" in   
   the imported Fossil commits. In Fossil the default username is the   
   same as the one you're currently using in you operating system.   
   Obviously the given email address should exist in one or more commit   
   messages.   
      
   If you want to change more than one email address you can do it using   
   several '--attribute' options:   
      
   +-------------------------------------------------------------------+   
      
   [continued in next message]   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca