From Mageia wiki
Jump to: navigation, search

Migração dos repositórios Subversion Mageia (e Mandriva) para git

Note que isso NÃO inclui a migração de pacotes VCS para o git (embora isso também esteja em andamento - e felizmente é muito mais programável por scripts).

O trabalho já está bem encaminhado. Várias árvores do subversion já foram convertidas e estão linkadas abaixo. Se você está vindo aqui depois de ser referenciado a ele ao tentar se comprometer com o subversion, então há algumas dicas abaixo.


Usando Git

O Git é similar ao Subversion em vários aspectos, mas é muito mais poderoso e tem fluxos de trabalho muito mais avançados para facilitar o trabalho offline. Existem muitos guias por aí para usar o git, então não faz muito sentido listar instruções genéricas aqui, mas aqui estão algumas recomendações.

  • Use seu endereço de e-mail @mageia.org se puder. Isso não é obrigatório, mas é legal manter o perfil da Mageia representado nos commits. Também encorajamos usar seu endereço @mageia.org para contribuições upstream.
  • Adicione as seguintes linhas ao seu arquivo ~/.gitconfig para permitir clonagem/envio fácil por meio de comandos semelhantes a "git clone mga:software/rpm/urpmi" (ou seja, omitindo a parte longa dos URLs):
[url "git://git.mageia.org/"]
        insteadof = mga:
[url "ssh://git@git.mageia.org/"]
        pushInsteadof = mga:

Processo de migração

  • Repositórios SVN "soft" do Mandriva convertidos para git via git-svn com tradução adequada do nome do autor.
  • Um script para importar repositórios Mageia SVN foi escrito. Este script:
    • Pega o repositório git-svn inicial do Mandriva e o redefine para nosso ponto de ramificação.
    • Pega o repositório SVN da Mageia e sintetiza um commit para alinhar as duas árvores.
    • Hacks git-svn metadados
    • Convence o git-svn a continuar e importar o Mageia SVN até os dias atuais com a tradução adequada do nome do autor.
    • Converte tags em tags anotadas apropriadamente
    • Grava SQL para monitorar a revisão do SVN -> git SHA1 para cada software para uso futuro.


Autenticação Git

A autenticação é manipulada pelo gitolite para permitir permissões de granularidade fina. Este trabalho foi feito por Nicolas Vigier (boklm).

O acesso push a cada repositório git é determinado, em última análise, por meio de associações de grupo LDAP. A ferramenta mgagit com o comando mgagit glrun) e grava os membros do grupo em arquivos em /var/lib/git/.gitolite/conf/ no formato gitolite, juntamente com ACLs para cada repositório. O acesso de gravação do repositório é definido pela hierarquia de repositório de nível superior ( artwork/ , qa/ , software/ , etc.) e é criado a partir de modelos especificados em https://gitweb.mageia.org/infrastructure/puppet/tree/deployment/mgagit/manifests/init.pp Normalmente, isso consiste nos membros do grupo LDAP %mga-X, onde X é essa hierarquia de nível superior ( %mga-artwork , %mga-qa , etc.) e o proprietário individual do repositório git. Esse proprietário é especificado em um arquivo em um dos meta-repositórios em infrastructure/repositories/ que define todos os repositórios git.

Como o gitolite não acessa o LDAP diretamente, mas usa as informações de associação de grupo em cache escritas pelo mgagit, elas podem ficar desatualizadas. Sempre que qualquer commit é enviado para qualquer repositório infrastructure/repositories/, um hook do git regenera automaticamente os arquivos de associação de grupo LDAP para o gitolite. Esses repositórios são atualizados muito raramente, então se você espera ter acesso push a um repositório, mas não tem, e [https://people.mageia.org/u/ você está no grupo LDAP correto, peça a um administrador de sistema para regenerar os arquivos do gitolite.

Layout do Git

O layout do subversion está um pouco "empurrado para baixo" no momento. Algum pensamento e cuidado serão colocados para garantir que o layout do git seja sensato.

Em termos gerais, dividiremos os repositórios em áreas principais de nível superior. Atualmente, "Software" e "Web", mas outros serão adicionados no devido tempo. Para cada nível superior, há um repositório Git que realmente define os repositórios git dentro deles. Clonar esse repositório e adicionar um arquivo *.repo apropriado criará esse repositório git automaticamente no push.

Layout do repositório

Módulo Subversion Git Tree (módulo final com o mesmo nome)
Painel Administrativo software/adminpanel
Linha de comando Mkcd software/perl/mkcd-commandline
execução automática software/autorun
utilitários do bootloader software/bootloader-utils
bootsplash software/bootsplash
build_system/README.md software/build-system/+documentation Read Docs NB: Este é um repositório de documentação para o build-system. Ele contém apenas um arquivo README.md
build_system/bcd software/build-system/bcd
build_system/iurt software/build-system/iurt
build_system/mga-youri-core software/build-system/mga-youri-core
build_system/mga-youri-submit software/build-system/mga-youri-submit
build_system/mgarepo software/build-system/mgarepo
build_system/web web/pkgsubmit Isso é tarball e lançado ou retirado diretamente no servidor? Se for o último, então talvez ele deva ser migrado para web/pkgsubmit para corresponder aos outros projetos web? Ele é retirado diretamente no servidor, movê-lo para pkgsubmit seria apropriado (rda)
common Abandonar??
control-center software/control-center
cpufreq software/cpufreq
dashboard [sem stdlayout] software/build-system/
desktop-common-data software/desktop/common-data (NB: o arquivo "menu-categories-list" será perdido...)
drak3d software/drak3d
drakguard software/drakguard
draklive software/build-system/draklive (NB: movido de /software/build-system em 1º de setembro de 2013 após discussões com tmb/blino)
draklive-install software/draklive-install
drakmenustyle software/drakmenustyle
drakpxelinux software/drakpxelinux
drakwizard software/drakwizard
drakx software/drakx NB: Reimportado em 27 de agosto de 2013 para corrigir datas de confirmação.
drakx-installer-help software/drakx-installer-help
drakx-kbd-mouse-x11 software/drakx-kbd-mouse-x11
drakx-net software/drakx-net
gpg [sem stdlayout] software/infrastructure/gpg
i18n-tools [sem stdlayout] software/i18n/tools
identity/CatDap web/identity
images-config/draklive software/build-system/draklive-config (NB: movido de /software/build-system/draklive em 1º de setembro de 2013 após discussões com tmb/blino) (provavelmente deveria ser build-system/draklive, pois é o mesmo lugar onde bcd e suas configurações estão / tmb)
indexhtml software/indexhtml
isocheck software/isocheck
kde4-splash-mga software/desktop/kde/splash
ldetect software/ldetect
ldetect-lst software/ldetect-lst
lxdm-theme-mageia software/desktop/lxde/theme-dm
mageia-doc software/
mageia-doc-media [sem stdlayout] software/
mageia-galaxy-data software/
mageia-kde-translation software/i18n/kde
mageia-kde4-config software/desktop/kde/config
mageia-lxde-config software/desktop/lxde/config
mageia-xfce-config software/desktop/xfce/config
mandi software/mandi
mga-advisories software/infrastructure/mgaadvisories
mga-gnome software/desktop/gnome/mgagnome (renomeado a pedido do mantenedor)
mga-mirrors software/infrastructure/mgamirrors/
mga-treasurer software/infrastructure/mgatres
mgaonline software/mgaonline
mgapeople software/infrastructure/mgapeople
mgasoft software/infrastructure/mgasoft
mgasvnstats software/infrastructure/mgasvnstats
mgatools software/infrastructure/mgatools
monitor-edid software/monitor-edid
msec software/msec
multiarch-utils software/multiarch-utils
numlock software/numlock
perl-Hal-Cdroms software/perl/perl-Hal-Cdroms
perl-MDK-Common software/perl/perl-MDK-Common
perl-Parse-EDID software/perl/perl-Parse-EDID NB: Reimportado em 27 de agosto de 2013 para corrigir datas de confirmação
perl_checker software/perl/perl_checker
release software/infrastructure/release
repoctl software/infrastructure/repoctl
rootfiles software/rootfiles
rpm/debuginfo-install Abandonar. De qualquer forma, está no pacote de FONTES gdb (com mais histórico e mais código)
rpm/perl-URPM software/rpm/perl-URPM (ou software/perl/ ??)
rpm/rpm-helper software/rpm/rpm-helper
rpm/rpm-setup software/rpm/rpm-setup
rpm/rpmtools software/rpm/rpmtools
rpm/spec-helper software/rpm/spec-helper
rpm/urpmi software/rpm/urpmi
rpmdrake software/rpmdrake
setup software/setup
system-config-printer software/i18n/system-config-printer
theme/ia_ora-gnome software/desktop/gnome/
theme/ia_ora-kde4 software/desktop/kde/
theme/mageia-gfxboot-theme software/design/bootloader-theme
theme/mageia-theme software/design/theme
theme/xsettings-kde Migrado para Upstream KDE como documentado.
transfugdrake software/transfugdrake
urpmi-proxy software/rpm/urpmi-proxy
usbdumper software/usbdumper
userdrake2 software/userdrake