Substitua o nome de usuário do Mercurial pelo Apache autenticado

2

Eu tenho um Debian 6 x64, python 2.6, Apache 2.2, Mercurial 1.8. O Mercurial é acessado via HTTPS, o python usa mod_wsgi , o Apache executa "Authentication: Basic" com mod_authnz_external .

O que eu preciso é substituir o nome de usuário do Mercurial fornecido pelo usuário. Portanto, se o usuário configurou o nome de usuário como "J.D.", mas efetua login com o nome de usuário "[email protected]", quero ver "[email protected]" no histórico de confirmações do Mercurial.

    
por adontz 15.06.2011 / 04:32

1 resposta

2

Você não pode fazer isso. Você não pode alterar nada em changesets que entram em um servidor, você só pode inspecioná-los (com um pretxnchangegroup hook ) e rejeitá-los se você não gosta do que vê.

O motivo pelo qual você não pode alterar nada é que os IDs do changeset dependem de todas as informações nos próprios changesets: nome de usuário, data de confirmação, mensagem de confirmação, arquivos alterados, as alterações em si. Se você mudar alguma coisa, então você também muda os hashes do changeset.

Mudar hashes de changesets é lamentável se os changesets já tiverem sido enviados para outros lugares - você acaba com changesets duplicados, já que você não pode comunicar ao cliente que você mudou seus changesets.

Você pode dizer que é um erro se Alice enviar conjuntos de alterações para o servidor sem seu nome real, mas na verdade é um recurso. Com um sistema de controle de versão distribuído, é possível que Alice puxe diretamente de Bob para revisar suas alterações. Ela pode então adicionar mais changesets em cima dele e empurrar a coisa toda para o servidor. Portanto, se você impedir que os usuários pressionem qualquer coisa, exceto seus próprios conjuntos de alterações, você evitará essa colaboração direta.

    
por 15.06.2011 / 08:59