Move to git

From vice-emu
Jump to navigation Jump to search

We want to move the repository to git(hub). Before that can happen, a couple things need to be done:

  • We need to establish a way to produce a simple increasing numbering scheme that can replace the SVN revision. This number must be easily relatable to GIT hashes, by both users and developers, without having to enter weird git commands or something similar.
    • Several scripts in the tree use the SVN revision, or other SVN things. These all have to be fixed to use the above
  • We'll have to agree on a development model. The most important difference to working with SVN is likely that usually with GIT you will NOT directly commit to the main tree, but always use a branch which is then merged into the tree.
    • That said, with cc65 we use a bit relaxed approach: "big" changes are made using branches und pull request, trivial things (fixing typos etc) can be pushed directly to the main tree
  • The switch needs to be seamless, so we don't have a long interruption where no one can work on the code. That means everything needs to be tested and fixed before we do that


before the switch

  • To make the transition as seamless and error free as possible, a script should be written that:
    • creates the initial git repository (locally)
    • converts svn commits into git commits
    • The branches that exist in the SVN repo must be converted to proper GIT branches
    • Most importantly the "tags" (which are really just SVN branches) should be converted to GIT tags
    • the testprogs and techdocs repositories can probably be just 1:1 converted into seperate git repositories
the above script can be checked into the svn repository

perhaps this article can give some hints

  • The github actions must be adjusted to use the git repositories (this can be prepared in a local git repo produced by the above script)
  • Some documentation must be updated to show the GIT commands instead of the SVN commands (this can be prepared in a local git repo produced by the above script)
    • howto-release.txt
    • probably some things in docs/building

doing the switch

Actually doing the switch will likely require two or three of us present and then do some tag team fixing :)

  • check URLs in all docs, website, repos etc. after this everything should point to the git repo.
  • do a last commit to the svn repository. This way everything will now point at github and (hopefully) still work when someone checks out the svn repo
  • produce a local git repo with the above script, push it to new public git repo
    • now everyone can push the fixes they prepared in local repos
  • test everything
    • clean checkout repo, build all archs
    • build a release

after the switch

  • set svn repo read only
  • remove remains of (hidden?) svn directories in the repo, making it git only
  • test everything AGAIN :)
    • clean checkout repo, build all archs
    • build a release
  • check URLs in all docs, website, repos etc
  • PROFIT!!!