git-debpush(1)

NOME
git-debpush - cria & empurra uma etiqueta git com metadados para um envio ftp-master

RESUMO
git debpush [opção...]

DESCRIÇÃO
git-debpush é um invólucro em volta de git-tag(1) e git-push(1). Ajuda-o a criar e empurrar uma etiqueta assinada com formato especial que indica que o cometido etiquetado deve ser empurrado (ou "enviado") para um arquivo de estilo Debian.

Tipicamente, o seu servidor git irá estar configurado para notificar um serviço intermediário da nova etiqueta que você empurrou. Esse serviço irá então buscar a sua etiqueta, verificar a sua assinatura PGP, e fazer qualquer conversão necessária (tal como produzir e assinar um .dsc e um .changes), e enviar o resultado para o arquivo de estilo Debian.

git-debpush é apenas para envios apenas-fonte.

UTILIZAÇÃO TÍPICA
git-debpush está desenhado para que os envios regulares do seu pacote, você deve ser capaz de apenas invoca-lo se passar nenhuns argumentos de linha de comandos. Após você compilar e testar alguns .debs, corra dch(1) para finalizar o seu registo de alterações e cometer o resultado, apenas escreva "git debpush", e o serviço intermediário e a sua rede auto-construtora da distribuição irá tomar conta do resto:

    % git debpush

A excepção mais comum a isto é a primeira vez que você usa git-debpush para um pacote não-nativo. Você tem de passar uma opção de modo quilt para informar o serviço intermediário de qual formato de ramo git você está a usar, por exemplo

    % git debpush --gbp

se você está a usar o formato de ramo git tipicamente usado pelo gbp(1). Veja "OPÇÕES DE MODO QUILT", em baixo, para as opções de modo quilt disponíveis.

Aparte de algumas verificações de sanidade para ajudar a evitar envios quebrados, o git-debpush não faz nada com a informação fornecida pela opção de modo quilt. Ele simplesmente embebede o modo quilt correspondente na sua etiqueta gerada, para uso pelo serviço intermediário.

Futuras invocações do git-debpush irão tentar ler o modo quilt a partir da etiqueta gerada pelo git-debpush para o seu envio anterior. Você pode sobrepor isso na linha de comandos ao passar uma opção de modo quilt, a qual irá sempre tomar precedência.

  Enganos
Se você usou git-debpush para fazer uma etiqueta mas ainda não a empurrou, seja porque usou --tag-only|-t ou porque o push falhou, pode bem apaga-la e criar outra. (No caso em que o empurrar falhou você pode apenas correr git-debpush outra vez sem apagar a etiqueta, e ele irá apenas re-tentar o push.)

Contudo, se uma etiqueta feita por este script foi empurrada, então não faça

•   apague a etiqueta, localmente ou remotamente;

•   retroceda (forçar push) o ramo onde a etiqueta está, ou

•   remova quaisquer entradas de debian/changelog.

O serviço intermediário não vai deixa-lo reutilizar o número de versão de qualquer maneira, e tomar qualquer destas ações pode criar uma dificuldade desnecessária para tentar outro envio. Em vez disto, adicione uma nova estrofe no changelog e corra git-debpush outra vez.

BEHAVIOUR
In summary, git-debpush just makes a git tag, and pushes. The tag2upload service then makes and uploads a source package.

In more detail, after reading command line options and configuration, git-debpush:

•   Checks that your remote is accessible by unauthenticated https. (Private repos don't work because the tag2upload service can't fetch your intended upload.)

•   Feteches, from your remote, the remote branch corresponding to HEAD, any "pristine-tar" branch, and any missing "debian/" tags.

•   Determines the quilt mode, based on the previous upload tags and command line options.

•   Determines the "upstream" tag (using the same approach as "git-deborig"), and determines whether the local pristine-tar branch has data for this upload.

•   Prepares and signs a git tag containing the upload instructions.

•   Pushes the git tag, and any updates to the current branch. Also pushes the upstream tag, the "upstream" branch (if the upstream tag is "upstream/"), and pristine-tar branch, as applicable.

git-debpush makes many other (local) checks for anomalies; these can generally be overridden (interactively or with "--force"). The tag2upload service performs even more thorough checks: for example, that an NMU is not being accidentally overwritten, and that the source package corresponds precisely to your tagged commit.

CONFIGURAÇÃO PARA FORMATO FONTE 1.0
O git-debpush precisa dizer ao serviço git intermediário se este é um pacote nativ ou não-nativo. Dado as práticas Debian históricas, não é suficiente fazer seja git-debpush ou o serviço intermediário confiar no número de versão em debian/changelog.

Se você está a usar um dos formatos de pacote fonte 3.0, o git-debpush irá apenas olhar em debian/source/format para determinar se o pacote é nativo ou não-nativo, e você pode ignorar esta secção do manual.

Se você está a usar o formato de pacote fonte 1.0 -- ou debian/source/format não existe, ou contém a string "1.0" -- então tem de dizer ao git-debpush se o pacote é nativo ou não-nativo. Nós fazemos isto usando debian/source/options. Se o seu pacote é não-nativo, execute

    % echo "-sk" >>debian/source/options

Se o seu pacote é nativo, execute

    % echo "-sn" >>debian/source/options

(Com formato fonte 1.0, o dpkg-source(1) decide se o pacote é nativo ou não-nativo com base na presença de um orig.tar em .., mas o git-debpush é uma ferramenta git pura que nunca olha para tarballs.)

OPÇÕES DO MODO QUILT

--quilt=gbp|--gbp
    Você está a usar o formato de ramo de patches não aplicadas, como usado tipicamente com gbp(1) em quilt(1).

--quilt=dpm|--dpm
    Você está a usar o formato de ramo de git-dpm(1).

--quilt=baredebian[+git]|--baredebian[+git]
    Você está a usar o formato de ramo 'bare debian', com a fonte de autor no formato de uma etiqueta de autoria.

    --quilt=baredebian+git é um nome alternativo para --quilt=baredebian.

--quilt=linear
    Você está a usar "git-debrebase" ou a manter semi-manualmente um ramo de patches-aplicadas.

    O serviço intermediário irá adicionar uma nova patch para cometido que toca na fonte do autor que ainda não está representado em debian/patches.

--quilt=single
    Você está a editar o código fonte do autor diretamente e não lhe interessa manter uma série de patches quebradas.

    Todas as alterações à fonte do autor serão esmagadas numa única patch em debian/patches, substituindo quaisquer patches existentes.

    Prefira isto à opção "single-debian-patch" do dpkg-source. (Veja --quilt=single em dgit(1) para uma explicação.)

--quilt=smash | --quilt=try-linear | --quilt=unapplied | --quilt=nofix
    Idêntico às opções dgit correspondentes. Por favor consulte dgit(1). A maioria dos utilizadores do git-debpush não vão querer estes modos.

OUTRAS OPÇÕES

--dry-run|-n
    Corre verificações e gera o texto da etiqueta, mas não assina nem cria a etiqueta, nem a empurra.

--tag-only|-t
    Apenas etiqueta, não empurra. É passado juntamente um "sem efeito" com --dry-run|-n.

--print-tag-text
    Também escreve o texto da etiqueta (não assinado) na saída standard.

    Útil juntamente com --dry-run|-n, para usar em script.

--help|-h
    Escreve um breve sumário de utilização e termina.

-u keyid
    Passado para git-tag(1).

--branch=RAMO
    Onde colocar a etiqueta, isto é, o que deseja lançar. Se não especificado, nós pomos a etiqueta em onde o CABEÇALHO aponta.

    Note que sito não precisa realmente ser um ramo, mas pode ser qualquer cometido (veja gitglossary(7)). O nome de opção é escolhido para corresponder ao que é de longe o caso mais comum.

--upstream=ETIQUETA
    Quando se empurra um pacote não-nativo, o git-debpush precisa duma etiqueta para a parte do autor do seu pacote.

    Por predefinição o git-debpush pergunta ao git-deborig(1), o qual procura por uma etiqueta apropriada baseada na versão de autor em debian/changelog.

--remote=REMOTO
    Para onde empurrar etiquetas e ramos. Se não especificado, usa o remoto que o git usaria se você escrevesse "git push RAMO".

--distro=DISTRIBUIÇÃO
    Qual o nome de distribuição a embeber na etiqueta assinada. A predefinição é "debian".

--untaint-history
    Nome alternativo conveniente para --deliberately-include-questionable-history. Veja em baixo, e consulte HISTÓRICO CONTAMINADO em dgit(7).

--deliberately-DELIB
    Requer certas sobreposições de verificações implementadas no processamento no lado do servidor. Do ponto de vista do git-debpush(1) isto são puros meta dados embebidos diretamente na etiqueta. Mas quando o servidor os encontra lá, pode mudar aspectos do comportamento. As seguintes sobreposições são presentemente significativas em Debian:

    --deliberately-include-questionable-history
    --deliberately-not-fast-forward

    Veja HISTÓRICO CONTAMINADO em dgit(7) para detalhes de quando usar estes. Para outros alvos de envio, o dgit(1) tem detalhes de todas as deliberações conhecidas; mas note que um servidor de envio pode definir as suas próprias.

    Note que ao contrário de --force, o seu uso de uma destas opções é permanentemente registada na etiqueta assinada.

--force|-f
    Ignora os resultados de todas as verificações destinadas a prevenir envios quebrados.

    Note que isto não implica fazer um empurrar forçado de git: O git-debpush nunca passa -f para o git push. Se você precisar disto, use git debpush -t e depois faça o seu próprio empurrar forçado de git.

--force=check[,check] ...
    Sobrepõe verificações individuais desenhadas para prevenir envios quebrados. Pode ser especificado mais do que uma vez.

    Usar --force ou --force=check pode fazer com que o envio falhe em qualquer ponto adiante no processo.

    Os valores válidos para check são descritos a seguir. As verificações dividem-se em dois grupos: aquelas verificações para as quais o git-debpush em uso interativo vai oferecer ignorar as falhas de verificação (com uma pergunta s/n), e aquelas verificações cuja falha vão sempre fazer o git-debpush terminar, a menos que forçado.

    A falha destas verificações pode ser ignorada durante uso interativo:

    uncommitted
        Ignora que existem alterações não cometidas aos ficheiros rastreados.

    untracked
        Ignora que existem ficheiros não rastreados. (Para o formato de ramo debian nu, ficheiros não rastreados fora de debian/ são sempre ignorados.)

    changed-quilt-mode
        Ignore the fact that the quilt mode option supplied on the command line is different to the one we would have autodetected.

        Overriding this is appropriate if the package's git workflow practices have changed since the last upload.

    superfluous-quilt-mode
        Ignora o facto que a opção de modo quilt fornecida na linha de comandos é a mesma que aquela que iria ser auto-detetada.

        Se um pacote foi antes enviado com git-debpush, você não precisa de passar --gbp|--dpm|--quilt=mode, excepto no caso pouco usual em que você está a alterar o seu fluxo de trabalho git.

        É melhor não entrar no hábito de especificar o modo quilt, pois isso pode sobrepor a determinação do git-debpush, e desse modo acabar por aplicar o modo quilt errado a um pacote diferente.

    upstream-nonancestor
        Ignora o facto que a etiqueta de autor não é um ancestral do ramo a ser etiquetado (saltar esta verificação é imposto pelo --quilt=baredebian).

    unreleased
        Permite envio para uma suite chamada UNRELEASED.

    dgit-view
        Ignora o empurrar aparente da vista dgit de um pacote (como produzido pelo dgit clone) para o ramo do maintainer, onde a vista dgit e a vista do maintainer do pacote não são idênticas.

    unstitched
        Ignora o facto que o ramo a ser empurrado parecer ser um ramo de git-debrebase(1) num estado descosido (veja git-debrebase(5)).

    detached
        Ignora o facto de que CABEÇALHO vai ser etiquetado, mas CABEÇALHO está desanexado (esta verificação é apenas efetuada quando a opção --branch=HEAD ou nenhuma --branch é especificada).

    branch-behind
        Ignora que o ramo local está atrás da sua autoria, arriscando enviar código fonte desatualizado. Se você sobrepor isto então apenas a etiqueta, e não o cometido para onde aponta, pode ser empurrada.

    branch-diverged
        Ignora que o ramo local e a sua autoria terem divergido, tal que apenas a etiqueta, e não o cometido para onde aponta, pode ser empurrada.

        Isto arrisca enviar código fonte caducado, agora ou no futuro.

    debian-upstream-diverged
        Ignore that the local Debian upstream tracking/import branch "upstream" has diverged from the "upstream" branch on the remote. This prevents us pushing the "upstream" branch, but we'll still push the upstream tag.

        Proceeding risks uploading work based on out-of-date upstream source code, now or in the future.

    pristine-tar-behind
        Ignore that the local pristine-tar branch is behind upstream (or absent). This risks the use of stale pristine-tar data and therefore possible generation of unintended orig tarballs.

    pristine-tar-diverged
        Ignore that the local pristine-tar branch and its upstream have diverged. This prevents us pushing the pristine-tar branch, and risks unexpected orig tarballs being generated now, or in the future.

    repo-inaccessible
        Ignora que o repositório para o qual a etiqueta vai ser empurrada não parece estar publicamente acessível.

    remake-tag
        Ignora que uma etiqueta do mesmo nome que o git-debpush propõe fazer já existe, com conteúdo diferente. Sobrepor esta verificação implica passar -f ao git-tag(1).

    unknown-delibrately
        Ignora que uma opção --deliberately-* foi fornecida que esta versão de git-debpush não a conhece.

        Isto pode estar correto, por exemplo se você está a correr uma versão antiga do git-debpush, ou a enviar para outro lado sem ser Debian.

        Mas caso contrário é provável que seja erro de escrita. Note que opções --deliberately-* desconhecidas (ou não aplicáveis) vão ser ignoradas em silêncio pelo servidor.

    Falhas destas verificações são sempre fatais, a menos que forçado:

    upstream-nonidentical
        Ignora quaisquer alterações entre a fonte de autor na etiqueta de autor e a fonte de autor no ramo a ser etiquetado (esta verificação só é efetuada quando se usa --quilt=gbp ou --quilt=unapplied).

    patches-nonapplicable
        Ignora quaisquer falhas das duas verificações seguintes:

        •   Com --quilt=gbp, --quilt=unapplied, --quilt=baredebian, --quilt=dpm, e --quilt=nofix, as patches quilt deverão aplicar de modo limpo à fonte de autor com git-apply(1).

        •   Com --quilt=dpm e --quilt=nofix, aplicar as patches quilt na fonte de autor deverá produzir exatamente a árvore fonte a ser etiquetada.

    submodule
        Ignora que existem sub-módulos git. Os sub-módulos não são suportados.

    local-options
        Ignora que o ficheiro debian/source/local-options existe. Este ficheiro não é suportado (mas note que você pode usar debian/source/options).

--batch
    Quando se usa interativamente, e um teste falha, o git-debpush irá por vezes propor ignorar a falha, dependendo da probabilidade de que ignorar a falha irá resultar num envio quebrado. Passar esta opção desactiva o aviso interativo.

--extra-metadata=<CHAVE[=VALOR]>
    Adiciona um item de metadados extra à etiqueta. CHAVE[=VALOR] vai ser inserida em uma das linhas de saída [dgit ...]. Esta opção pode ser repetida como necessário.

    Você tem controle manual completo. A sintaxe e semânticas são completamente não verificadas. Esta opção pode ser útil, por exemplo, se você está a correr uma versão antiga do git-debpush, ou a enviar para um outro lado sem ser Debian.

--no-pristine-tar
    Prevent detection and use of pristine-tar data. If new origs need to be generated, they will be made with "git-deborig".

FILES

git configuration
    git-debpush is influenced by git configuration options, notably
     "remote.pushDefault", "branch.BRANCH.pushDefault", "branch.BRANCH.pushRemote", and "remote.REMOTE.url".

".git/git-debpush"
    Used for temporary working areas. Will normally be cleaned up after a successful run.

VEJA TAMBÉM
<https://wiki.debian.org/tag2upload>, tag2upload(5)

Formatos de ramo git usados pelos maintainers de Debian: <https://wiki.debian.org/GitPackagingSurvey>

AUTOR
git-debpush e este manual foram escritos por Sean Whitton <spwhitton@spwhitton.name> com muitas entradas de Ian Jackson <ijackson@chiark.greenend.org.uk>.