====== Git Migration ======
The git conversion is done. Most of the stuff below is accurate. We ended up migrating all our i18n stuff to [[http://transifex.org|Transifex]], and we don't allow direct commit access to the git repositories by translators. All code committers have ssh accounts on the server that are restricted using git-shell. For more information, see our [[dev:howto:git|git how-to page]].
We intend to switch to Git at some point in the near future. This is a collection of links and resources about transitioning from svn to git so I don't forget them.
===== Resources =====
* [[http://git.xfce.org/admin/xfce-git-migration|Our conversion tools]]
* [[http://live.gnome.org/GitMigration|GNOME's experiences with migrating to git]]
* [[http://git.gnome.org/cgit/gnome-git-migration/|GNOME's scripts and other migration goodies]]
* possible conversion tool: [[http://repo.or.cz/w/svn-all-fast-export.git|svn-all-fast-export]]
* another possible conversion tool(?): [[http://repo.or.cz/w/fast-export.git|fast-export]]
* [[http://blogs.gnome.org/simos/2009/04/08/towards-a-gnome-cli-translation-management-tool/|possible new i18n commit tool]]
* stuff about [[http://mail.gnome.org/archives/gnome-infrastructure/2009-April/msg00133.html|autogenerated ChangeLogs]]
* Behdad's [[http://git.gnome.org/cgit/pango/tree/git.mk|.gitignore auto-generator]]
===== Stuff That's Done =====
* svn username -> realname+email mapping
* People with a https account on svn.xfce.org: Set your personal details [[https://svn.xfce.org/account/|here]].
* [[http://git.xfce.org/kelnos/xfce-git-migration/tree/Makefile|Makefile]] handles generating this mapping.
* SVN -> git conversion script
* See [[http://git.xfce.org/kelnos/xfce-git-migration/tree/svn2git.sh|here]]. So far it's working (it's about 2/3 of the way through the main Xfce repository, haven't gotten to goodies yet), but needs a lot more testing, and the generated repos haven't been verified yet --- //[[kelnos@xfce.org|Brian Tarricone]] 2009/05/06 20:07//
* Generated git repo verification script.
* See [[http://git.xfce.org/kelnos/xfce-git-migration/tree/compare-repos.sh|here]]. It seems to work well so far, but still needs a little more work --- //[[kelnos@xfce.org|Brian Tarricone]] 2009/05/09 00:43//
===== Stuff In Progress =====
* pre-commit permissions-handling hooks (Brian)
* commit mail hook (Jannis)
* i18n checkout tool ([[http://mocha.xfce.org/~kelnos/testing/xdt-i18n|untested version]])
===== Missing Stuff =====
* I18n stats pulled from git (Stephan, I presume, will do this)
===== Open Questions (please discuss!) =====
* The big one: do we really want to do this? Are there any legitimate objections or reasons why we shouldn't switch to git?
* I obviously think this is the right way to go, but maybe there are convincing reasons to the contrary. --- //[[kelnos@xfce.org|Brian Tarricone]] 2009/04/19 14:51//
* I prefer a DVCS over CVCS, since it allows me to use VC features when I do not have access to an inet connection. I don't have a particular preference for git, prolly any DVCS will do. --- //[[stephan@xfce.org|Stephan Arts]] 2009/04/20 12:16//
* Note that hg, bzr, mtn, etc. aren't really on the table. They're all fine VCSes, but it's clear that the majority of people who commit actively are familiar with and like git.
* Do we continue to have separate trees for 'xfce' and 'goodies', or do we just have one big tree?
* Personally, I'd prefer one big tree, and the apps that comprise the core Xfce releases is independent of that. --- //[[kelnos@xfce.org|Brian Tarricone]] 2009/04/19 14:51//
* I'd also prefer one big tree. With SVN we just had two repositories (xfce, goodies) but with git each component will have its own repository anyway. It's just a matter of which URL to use to check them out then. --- //[[jannis@xfce.org|Jannis Pohlmann]] 2009/04/19 15:24//
* I'm ok with that too, as long as we can still separate the permissions. How are the po permissions handled in git, is it possible to set this on directory level? --- //[[nickschermer@gmail.com|Nick Schermer]] 2009/04/19 18:55//
* Git has no support for access control. If we want fine-grained permissions we'll have to implement an access control script in one of the hooks that can reject a commit. --- //[[jannis@xfce.org|Jannis Pohlmann]] 2009/04/19 23:37//
* I prefer one big tree too, I don't see a good reason why we should split that up. --- //[[stephan@xfce.org|Stephan Arts]] 2009/04/20 12:16//
* How do we handle per-user repos -- I want to allow people to create throwaway repos or just host "middle ground" stuff that's somewhat Xfce/Gtk/whatever-related, but maybe not quite "Xfce enough" to be in the main repo? (e.g., see [[http://cgit.freedesktop.org/|cgit.fd.o]]; scroll down a bit to see the ~ repos.)
* Possibly we'd do this with a [[http://gitorious.org|Gitorious]] instance, but need to investigate more. This can be punted to later. --- //[[kelnos@xfce.org|Brian Tarricone]] 2009/04/19 14:51//
* I would prefer the freedesktop way for this. Xfce core components start with xfce/{xfwm4,xfdesktop,xfce4-panel,thunar,...}, goodies/... and ~nick/something. --- //[[nickschermer@gmail.com|Nick Schermer]] 2009/04/19 18:55//
* Branch/tag name rewriting: we have old nasty branch/tag names like "xfce_4_4" and "xfce_4_4_2" in our tree because of CVS's limitations back in the day. We never remedied this situation when we switched to SVN. Prettier names like "xfce-4.4" and "xfce-4.4.2" are possible now. Should these be changed?
* Current [[http://git.xfce.org/kelnos/xfce-git-migration/tree/svn2git.sh|script]] does change these. Jannis agrees this is a good idea. --- //[[kelnos@xfce.org|Brian Tarricone]] 2009/05/06 20:07//
* The GNOME guys rewrote their commit messages on the fly while converting to make them more like the git recommended commit msg pattern (max 72 char single line shortlog, blank line, freeform larger description). Should we do this too?
* Probably not. Our commit messages are all over the place with regard to how they're formatted, and xdt-commit generates commit messages that are pretty impossible to extract one-line summaries from. Jannis agrees. --- //[[kelnos@xfce.org|Brian Tarricone]] 2009/05/06 20:22//