Git šŸŒ™
PortuguĆŖs (Brasil) ā–¾ Topics ā–¾ Latest version ā–¾ git-p4 last updated in 2.37.0

NOME

git-p4 - Importe e envie para os repositĆ³rios Perforce

RESUMO

git p4 clone [<opƧƵes-de-sincronismo>] [<opƧƵes-da-clonagem>] <caminho-do-depĆ³sito-p4>…​
git p4 sync [<opƧƵes-de-sincronismo>] [<caminho-do-depĆ³sito-p4>…​]
git p4 rebase
git p4 submit [<opƧƵes-de-envio>] [<nome-do-ramo-master>]

DESCRIƇƃO

Este comando fornece uma maneira de interagir com os repositĆ³rios p4 utilizando o Git.

Crie um novo repositĆ³rio Git a partir de um repositĆ³rio p4 jĆ” existente usando o comando git p4 clone, informando a ele um ou mais caminhos do depĆ³sito p4. Incorpora novas alteraƧƵes nos commits p4 com o comando git p4 sync. O comando sync tambĆ©m Ć© usado para incluir novas ramificaƧƵes de outros caminhos do depĆ³sito do p4. Submeta as alteraƧƵes do Git de volta ao p4 usando o comando git p4 submit. O comando git p4 rebase faz uma sincronizaĆ§Ć£o e faz o "rebase" do ramo atual para o ramo remoto p4 atualizado.

EXEMPLOS

  • Clone um repositĆ³rio:

    $ git p4 clone //depot/path/project
  • FaƧa algum trabalho no repositĆ³rio Git recĆ©m-criado:

    $ cd project
    $ vi foo.h
    $ git commit -a -m "foo.h editado"
  • Atualize o repositĆ³rio Git com as alteraƧƵes recentes vindos do p4, reorganizando o seu trabalho no topo:

    $ git p4 rebase
  • Envie os seus commits de volta para p4:

    $ git p4 submit

COMANDOS

Clone

Geralmente, o comando git p4 clone Ć© utilizado para criar um novo diretĆ³rio Git a partir de um repositĆ³rio p4 jĆ” existente:

$ git p4 clone //depot/path/project

Este:

  1. Cria um repositĆ³rio Git vazio num subdiretĆ³rio chamado project.

  2. Importa todo o conteĆŗdo da revisĆ£o principal do caminho do depĆ³sito p4 informado num Ćŗnico commit no ramo Git refs/remotes/p4/master.

  3. Cria um ramo local, master, deste ramo remoto e faz uma averiguaĆ§Ć£o.

Para reproduzir todo o histĆ³rico p4 no Git, utilize o modificador @all no caminho do depĆ³sito:

$ git p4 clone //depot/path/project@all

Sync

ƀ medida que o desenvolvimento continua no repositĆ³rio p4, estas alteraƧƵes podem ser incluĆ­das no repositĆ³rio Git utilizando:

$ git p4 sync

Este comando encontra as novas alteraƧƵes no p4 e as importa conforme o Git realiza os commits.

Os repositĆ³rios P4 podem ser adicionados a um repositĆ³rio Git jĆ” existente tambĆ©m utilizando o comando git p4 sync:

$ mkdir repo-git
$ cd repo-git
$ git init
$ git p4 sync //path/in/your/perforce/depot

Isso importa o depĆ³sito especificado para refs/remotes/p4/master num repositĆ³rio Git jĆ” existente. A opĆ§Ć£o --branch pode ser usada para especificar uma ramificaĆ§Ć£o diferente a ser usada para o conteĆŗdo do p4.

Se um repositĆ³rio Git incluir as ramificaƧƵes refs/remotes/origin/p4, elas serĆ£o obtidas e consultadas primeiro durante a execuĆ§Ć£o do comando git p4 sync. Como a importaĆ§Ć£o direta do p4 Ć© consideravelmente mais lenta do que a extraĆ§Ć£o de alteraƧƵes de um Git remoto, isso pode ser Ćŗtil num ambiente com vĆ”rios desenvolvedores.

Se houver vĆ”rias ramificaƧƵes, o comando git p4 sync usarĆ” automaticamente o algoritmo "BRANCH DETECTION" para tentar dividir as novas alteraƧƵes na ramificaĆ§Ć£o correta. Isso pode ser substituĆ­do pela opĆ§Ć£o --branch especificando apenas um Ćŗnico ramo para ser atualizado.

Rebase

Um padrĆ£o de trabalho comum Ć© obter as alteraƧƵes mais recentes do depĆ³sito p4 e mesclĆ”-las com as alteraƧƵes locais onde o commit ainda nĆ£o foi feito. Muitas vezes, o repositĆ³rio p4 Ć© o local definitivo para todo o cĆ³digo, portanto, um fluxo de trabalho do "rebase" faz sentido. Esse comando executa o comando git p4 sync seguido do git rebase para mover os commits locais no topo das alteraƧƵes atualizadas do p4.

$ git p4 rebase

Envio

O envio das alteraƧƵes de um repositĆ³rio Git de volta ao repositĆ³rio p4 requer um espaƧo de trabalho separado do cliente p4. Isso deve ser especificado usando a variĆ”vel de ambiente P4CLIENT ou a variĆ”vel de configuraĆ§Ć£o do Git git-p4.client. O cliente p4 deve existir, mas a raiz do cliente serĆ” criada e preenchida se ainda nĆ£o existir.

Para enviar todas as alteraƧƵes que estĆ£o no ramo Git atual, mas nĆ£o no ramo p4/master, utilize:

$ git p4 submit

Para definir um ramo diferente do atual, utilize:

$ git p4 submit topicbranch

Para definir um Ćŗnico commit ou um intervalo de commits, utilize:

$ git p4 submit --commit <sha1>
$ git p4 submit --commit <sha1..sha1>

A referĆŖncia upstream geralmente Ć© refs/remotes/p4/master, mas pode ser substituĆ­da utilizando a opĆ§Ć£o da linha de comando --origin=.

As alteraƧƵes p4 serĆ£o criadas assim que o usuĆ”rio invocar o comando git p4 submit. A opĆ§Ć£o --preserve-user farĆ” com que a propriedade seja modificada de acordo com o autor do commit. Essa opĆ§Ć£o requer privilĆ©gios de administrador no p4, que podem ser concedidos usando p4 protect.

Para arquivar as alteraƧƵes em vez de enviƔ-las, utilize --shelve e --update-shelve:

$ git p4 submit --shelve
$ git p4 submit --update-shelve 1234 --update-shelve 2345

Unshelve

O desarquivamento pega uma lista de alteraƧƵes P4 arquivada e produz o commit equivalente com o git no ramo refs/remotes/p4-unshelved/<changelist>.

O commit do git Ć© criado em relaĆ§Ć£o Ć  revisĆ£o de origem atual (a predefiniĆ§Ć£o Ć© HEAD). Um commit principal Ć© criado com base na origem e, em seguida, o commit armazenado Ć© criado com base nele.

A revisĆ£o da origem pode ser alterada com a opĆ§Ć£o "--origin".

Se o ramo de destino em refs/remotes/p4-unshelved jĆ” existir, o antigo serĆ” renomeado.

$ git p4 sync
$ git p4 unshelve 12345
$ git show p4-unshelved/12345
<encaminha mais alteraƧƵes atravƩs do p4 para os mesmos arquivos>
$ git p4 unshelve 12345
<se recusa a fazer o desarquivamento a menos que o git esteja em sincronia com o p4 novamente>

OPƇƕES

OpƧƵes gerais

Todos os comandos, exceto o clone, aceitam estas opƧƵes.

--git-dir <dir>

Defina a variƔvel de ambiente GIT_DIR. Consulte git[1].

-v
--verbose

ForneƧa mais informaƧƵes sobre o progresso.

OpƧƵes de sincronizaĆ§Ć£o

Estas opƧƵes podem ser utilizadas no clone inicial, bem como nas operaƧƵes subsequentes de sincronizaĆ§Ć£o.

--branch <ref>

Importar as alteraƧƵes para <ref> em vez de refs/remotes/p4/master. Se <ref> comeƧar com refs/, ele serĆ” usado como estĆ”. Caso contrĆ”rio, se nĆ£o comeƧar com p4/, esse prefixo serĆ” adicionado.

Por padrĆ£o, uma <ref> que nĆ£o comece com refs/ Ć© tratada como o nome de uma ramificaĆ§Ć£o de rastreamento remoto (em refs/remotes/). Esse comportamento pode ser alterado usando a opĆ§Ć£o --import-local.

A predefiniĆ§Ć£o do <ref> Ć© "master".

Este exemplo importa um novo "p4/proj2" remoto para um repositĆ³rio Git jĆ” existente:

    $ git init
    $ git p4 sync --branch=refs/remotes/p4/proj2 //depot/proj2
--detect-branches

Use o algoritmo de detecĆ§Ć£o de ramificaĆ§Ć£o para encontrar novos caminhos em p4. Ele estĆ” documentado abaixo em "DETECƇƃO DO RAMO".

--changesfile <arquivo>

Importe exatamente os nĆŗmeros de alteraĆ§Ć£o do p4 listados em file, um por linha. Normalmente, o git p4 inspeciona o estado atual do repositĆ³rio p4 e detecta as alteraƧƵes que deve importar.

--silent

NĆ£o exiba nenhuma informaĆ§Ć£o do progresso.

--detect-labels

Consulte a pĆ”gina p4 para os rĆ³tulos associados aos caminhos do depĆ³sito e adicione-os como tags no Git. Utilidade limitada, pois importa apenas as etiquetas associadas a novas listas de alteraƧƵes. Descontinuada.

--import-labels

Importe os rĆ³tulos do p4 para o Git.

--import-local

Ɖ predefinido que as ramificaƧƵes p4 sejam armazenadas em refs/remotes/p4/, onde serĆ£o tratadas como ramificaƧƵes de rastreamento remoto pelo git-branch[1] e outros comandos. Em vez disso, essa opĆ§Ć£o coloca as ramificaƧƵes p4 em refs/heads/p4/. Observe que as futuras operaƧƵes de sincronizaĆ§Ć£o tambĆ©m devem especificar a opĆ§Ć£o --import-local para que possam encontrar as ramificaƧƵes do p4 em refs/heads.

--max-changes <n>

Importe no mĆ”ximo n alteraƧƵes, em vez de todo o intervalo de alteraƧƵes incluĆ­do no especificador da revisĆ£o informado. Um uso comum seria utilizar @all como especificador da revisĆ£o, porĆ©m depois utilizar a opĆ§Ć£o --max-changes 1000 para importar apenas as Ćŗltimas 1000 revisƵes, em vez de todo o histĆ³rico.

--changes-block-size <n>

O tamanho do bloco interno que serĆ” utilizado ao converter um especificador da revisĆ£o como @all numa lista com a quantidade especĆ­fica de alteraĆ§Ć£o. Em vez de utilizar uma Ćŗnica chamada para p4 changes visando encontrar a lista completa das alteraƧƵes para a conversĆ£o, hĆ” uma sequĆŖncia de chamadas para p4 changes -m, cada uma das quais solicita um bloco de alteraƧƵes com um tamanho definido. O tamanho padrĆ£o do bloco Ć© 500, o que geralmente deve ser o suficiente.

--keep-path

Ɖ predefinido que o mapeamento dos nomes dos arquivos do caminho do depĆ³sito p4 para o Git, envolve a remoĆ§Ć£o de todo o caminho do depĆ³sito. Com esta opĆ§Ć£o, o caminho completo do depĆ³sito p4 Ć© mantido no Git. Por exemplo, o caminho //depot/main/foo/bar.c, quando for importado de //depot/main/, torna-se foo/bar.c. Com a opĆ§Ć£o --keep-path, o caminho do Git se torna, depot/main/foo/bar.c.

--use-client-spec

Use uma especificaĆ§Ć£o de cliente para encontrar a lista de arquivos interessantes no p4. Consulte a seĆ§Ć£o "ESPECIFICAƇƃO DO CLIENTE" abaixo.

-/ <caminho>

Exclua os caminhos selecionados do depĆ³sito durante a clonagem ou sincronizaĆ§Ć£o.

OpƧƵes de clonagem

Estas opƧƵes podem ser utilizadas num clone inicial, juntamente com as opƧƵes de sincronizaĆ§Ć£o descritas acima.

--destination <diretĆ³rio>

Onde criar o repositĆ³rio Git. Se nĆ£o for informado, o Ćŗltimo componente no caminho do depĆ³sito do p4 serĆ” usado para criar um novo diretĆ³rio.

--bare

Fazendo uma clonagem simples. Consulte git-clone[1].

OpƧƵes de envio

Estas opƧƵes podem ser utilizadas para modificar o comportamento do git p4 submit.

--origin <commit>

O local upstream a partir de onde os commits sĆ£o identificados para envio ao p4. Ɖ predefinido que este Ć© o commit p4 mais recente acessĆ­vel a partir do HEAD.

-M

Detecte as renomeaƧƵes. Consulte o comando git-diff[1]. Os renomeamentos serĆ£o representados no p4 usando operaƧƵes explĆ­citas de "mover". NĆ£o hĆ” opĆ§Ć£o correspondente para detectar cĆ³pias, mas hĆ” variĆ”veis para movimentos e para cĆ³pias.

--preserve-user

Reautorize as alteraƧƵes do p4 antes de enviĆ”-las ao p4. Essa opĆ§Ć£o requer privilĆ©gios de administrador do p4.

--export-labels

Exporte as tags do Git como etiquetas p4. As tags encontradas no Git sĆ£o aplicadas ao diretĆ³rio de trabalho do perforce.

-n
--dry-run

Mostre apenas quais os commits seriam enviados ao p4; nĆ£o mude de condiĆ§Ć£o no Git ou no p4.

--prepare-p4-only

Aplique um commit ao espaƧo de trabalho do p4, abrindo, adicionando e excluindo arquivos no p4 como numa operaĆ§Ć£o normal de envio. NĆ£o emita o "p4 submit" final, mas imprima uma mensagem sobre como enviar manualmente ou de como reverter. Esta opĆ§Ć£o sempre Ć© interrompida apĆ³s o primeiro commit (mais antigo). As etiquetas Git nĆ£o sĆ£o exportadas para o p4.

--shelve

Em vez de enviar, crie o armazenamento de uma sĆ©rie de listas de alteraƧƵes. ApĆ³s criar cada espaƧo de armazenamento, os arquivos relevantes sĆ£o revertidos/excluĆ­dos. Se vocĆŖ tiver vĆ”rios commits pendentes, serĆ£o criados vĆ”rios espaƧos de armazenamento.

--update-shelve CHANGELIST

Atualize uma lista de alteraƧƵes existentes que foram arquivadas com este commit. Implica no uso da opĆ§Ć£o --shelve. Repita o procedimento para as vĆ”rias listas de alteraƧƵes que foram arquivadas.

--conflict=(ask|skip|quit)

Podem ocorrer conflitos ao aplicar um commit ao p4. Quando isso acontece, o comportamento predefinido ("ask") Ć© lhe perguntar se vocĆŖ quer pular este commit e continuar ou encerrar. Essa opĆ§Ć£o pode ser usada para ignorar o aviso, fazendo com que os commits conflitantes sejam automaticamente ignorados, ou para parar de tentar aplicar os commits, sem aviso.

--branch <ramo>

ApĆ³s o envio, sincronize este ramo nomeado em vez do p4/master predefinido. Para mais informaƧƵes consulte a seĆ§Ć£o "OpƧƵes de sincronizaĆ§Ć£o" acima.

--commit (<sha1>|<sha1>..<sha1>)

Envie apenas o commit ou o intervalo dos commits informados, em vez da lista completa de alteraƧƵes que estĆ£o no ramo Git atual.

--disable-rebase

Desative a nova reconstruĆ§Ć£o automĆ”tica depois que todos os commits forem enviados com ĆŖxito. TambĆ©m pode ser definido com git-p4.disableRebase.

--disable-p4sync

Desative a sincronizaĆ§Ć£o automĆ”tica do p4/master do "Perforce" depois que os commits tenham sido enviados. Implica no uso da opĆ§Ć£o --disable-rebase. TambĆ©m pode ser definido com git-p4.disableP4Sync. A sincronizaĆ§Ć£o com origin/master se for possĆ­vel ainda continua.

Ganchos para envio

p4-pre-submit

O gancho p4-pre-submit Ć© executado se existir e for executĆ”vel. O gancho nĆ£o recebe parĆ¢metros e nada da entrada predefinida. Ao encerrar com uma condiĆ§Ć£o de encerramento diferente de zero desse script impede que o comando git-p4 submit seja iniciado. Ele pode ser ignorado com a opĆ§Ć£o de linha de comando --no-verify.

Um cenĆ”rio para a sua utilizaĆ§Ć£o Ć© executar os testes da unidade no gancho.

p4-prepare-changelist

O gancho p4-prepare-changelist Ć© executado logo apĆ³s a preparaĆ§Ć£o da mensagem predefinida da lista de alteraƧƵes e antes do editor ser iniciado. Ele recebe um parĆ¢metro, o nome do arquivo que contĆ©m o texto da lista de alteraƧƵes. Ao encerrar o script com um status diferente de zero farĆ” com que o processo seja encerrado.

O objetivo do gancho Ć© editar o arquivo de mensagem no local, nĆ£o sendo suprimido pela opĆ§Ć£o --no-verify. Este gancho Ć© chamado mesmo se a opĆ§Ć£o --prepare-p4-only estivesse definida.

p4-changelist

O gancho p4-changelist Ć© executado depois que mensagem da lista de alteraƧƵes tenha sido editada pelo usuĆ”rio. Pode ser ignorado com a opĆ§Ć£o --no-verify. Ɖ necessĆ”rio um Ćŗnico parĆ¢metro, o nome do arquivo que contenha o texto da lista das alteraƧƵes propostas. Encerre com uma condiĆ§Ć£o diferente de zero, faz com que o comando seja cancelado.

O gancho tem permissĆ£o para editar o arquivo da lista de alteraƧƵes e pode ser utilizado para normalizar o texto em algum formato predefinido pelo projeto. TambĆ©m pode ser utilizado para recusar o envio apĆ³s a inspeĆ§Ć£o da mensagem do arquivo.

p4-post-changelist

O gancho p4-post-changelist Ć© executado depois que o envio tenha ocorrido com ĆŖxito no P4. NĆ£o precisa de quaisquer parĆ¢metros e serve primeiramente para notificaƧƵes e pode nĆ£o afetar o resultado da aĆ§Ć£o do comando git p4 submit.

OpƧƵes para a reconstruĆ§Ć£o da fundaĆ§Ć£o

Essas opƧƵes podem ser utilizadas para modificar o comportamento do git p4 rebase.

--import-labels

Importe as etiquetas p4.

Desfazer as opƧƵes

--origin

Define o git refspec onde a lista de alteraƧƵes P4 arquivada Ć© comparada. A predefiniĆ§Ć£o Ć© p4/master.

SINTAXE DO CAMINHO DO DEPƓSITO

O argumento do caminho do depĆ³sito p4 para o comando git p4 sync e o git p4 clone pode ser um ou mais caminhos para o depĆ³sito p4 separados com espaƧo, com um especificador opcional da revisĆ£o p4 no final:

"//depot/my/project"

Importe um commit com todos os arquivos na alteraĆ§Ć£o #head sob essa Ć”rvore.

"//depot/my/project@all"

Importe um commit para cada alteraĆ§Ć£o no histĆ³rico desse caminho do depĆ³sito.

"//depot/my/project@1,6"

Importe apenas as alteraƧƵes entre 1 a 6.

"//depot/proj1@all //depot/proj2@all"

Importe todas as alteraƧƵes de ambos os caminhos de depĆ³sito nomeados num Ćŗnico repositĆ³rio. Somente os arquivos abaixo desses diretĆ³rios sĆ£o incluĆ­dos. NĆ£o hĆ” um subdiretĆ³rio no Git para cada "proj1" e "proj2". VocĆŖ deve usar a opĆ§Ć£o --destination ao especificar mais de um caminho para o depĆ³sito. A opĆ§Ć£o da revisĆ£o deve ser informado de forma idĆŖntica em cada caminho para o depĆ³sito. Se houver arquivos nos caminhos do depĆ³sito com o mesmo nome, o caminho com a versĆ£o atualizada mais recente do arquivo Ć© o que aparece no Git.

Consulte revisƵes de ajuda p4 para obter a sintaxe completa dos especificadores da revisĆ£o p4.

ESPECIFICAƇƃO DO CLIENTE

A especificaĆ§Ć£o do cliente p4 Ć© mantida com o comando p4 client e contĆ©m, entre outros campos, uma visualizaĆ§Ć£o que especifica como o depĆ³sito Ć© mapeado no repositĆ³rio do cliente. Os comandos clone e sync podem consultar a especificaĆ§Ć£o do cliente quando a opĆ§Ć£o --use-client-spec Ć© usada ou quando a variĆ”vel useClientSpec Ć© verdadeira. ApĆ³s o git p4 clone, a variĆ”vel useClientSpec Ć© definida automaticamente no arquivo de configuraĆ§Ć£o do repositĆ³rio. Isso permite que os futuros comandos git p4 submit funcionem corretamente; o comando submit olha apenas para a variĆ”vel e nĆ£o tem uma opĆ§Ć£o de linha de comando.

A sintaxe completa de uma visualizaĆ§Ć£o p4 estĆ” documentada em p4 help views. O comando git p4 conhece apenas um subconjunto da sintaxe da visualizaĆ§Ć£o. Ele entende mapeamentos de vĆ”rias linhas, sobreposiƧƵes com +, exclusƵes com - e aspas duplas ao redor de espaƧos em branco. Dos curingas possĆ­veis, o comando git p4 sĆ³ lida com …​, e somente quando ele estĆ” no final do caminho. O comando git p4 reclamarĆ” ao se deparar com um curinga nĆ£o manipulado.

Existem bugs na implementaĆ§Ć£o dos mapeamentos da sobreposiĆ§Ć£o. Se vĆ”rios caminhos de depĆ³sito forem mapeados por meio de sobreposiƧƵes para o mesmo local no repositĆ³rio, o comando git p4 poderĆ” escolher o caminho errado. Isso Ć© difĆ­cil de resolver sem dedicar uma especificaĆ§Ć£o de cliente apenas para o git p4.

O nome do cliente pode ser fornecido ao git p4 de vĆ”rias maneiras. A variĆ”vel git-p4.client tem precedĆŖncia caso ele exista. Caso contrĆ”rio, serĆ£o usados os mecanismos normais do p4 para determinar o cliente: a variĆ”vel de ambiente P4CLIENT, um arquivo referenciado por P4CONFIG ou o nome do host local.

DETECƇƃO DO RAMO

O P4 nĆ£o tem o mesmo conceito de ramificaĆ§Ć£o que o Git. Em vez disso, o p4 organiza seu conteĆŗdo como uma Ć”rvore de diretĆ³rios, onde, por convenĆ§Ć£o, diferentes ramificaƧƵes lĆ³gicas estĆ£o em diferentes locais da Ć”rvore. O comando p4 branch Ć© usado para manter mapeamentos entre diferentes Ć”reas da Ć”rvore e indicar o conteĆŗdo relacionado. O comando git p4 pode usar esses mapeamentos para determinar as relaƧƵes de ramificaĆ§Ć£o.

Caso vocĆŖ possua um repositĆ³rio onde todas as ramificaƧƵes de interesse existam como subdiretĆ³rios de um Ćŗnico caminho do depĆ³sito, Ć© possĆ­vel utilizar o comando --detect-branches durante a clonagem ou sincronizaĆ§Ć£o para que o comando git p4 encontre automaticamente os subdiretĆ³rios p4 e gere-os como os ramos no Git.

Por exemplo, se a estrutura do repositĆ³rio P4 for:

//depot/main/...
//depot/branch1/...

E "p4 branch -o branch1" mostra uma linha View que se parece com:

//depot/main/... //depot/branch1/...

EntĆ£o este comando git p4 clone:

git p4 clone --detect-branches //depot@all

produz uma ramificaĆ§Ć£o separada em refs/remotes/p4/ para //depot/main, chamado master, e uma para //depot/branch1 chamada depot/branch1.

No entanto, nĆ£o Ć© necessĆ”rio criar ramificaƧƵes no p4 para poder usĆ”-las como ramificaƧƵes. Como Ć© difĆ­cil inferir nas relaƧƵes da ramificaĆ§Ć£o automaticamente, uma definiĆ§Ć£o de configuraĆ§Ć£o git-p4.branchList do Git pode ser usada para identificar explicitamente as relaƧƵes da ramificaĆ§Ć£o. Ɖ uma lista de pares "source:destination", como uma especificaĆ§Ć£o simples de ramificaĆ§Ć£o p4, onde "source" e "destination" sĆ£o os elementos de caminho no repositĆ³rio p4. O exemplo acima se baseou na presenƧa da ramificaĆ§Ć£o p4. Sem as ramificaƧƵes p4, o mesmo resultado ocorrerĆ” com:

git init depot
cd depot
git config git-p4.branchList main:branch1
git p4 clone --detect-branches //depot@all .

DESEMPENHO

O mecanismo de importaĆ§Ć£o rĆ”pida usado pelo git p4 cria um arquivo de pacote para cada invocaĆ§Ć£o do "git p4 sync". Normalmente, a compactaĆ§Ć£o de lixo do Git (git-gc[1]) compacta automaticamente estes arquivos em menos arquivos do pacote, mas a invocaĆ§Ć£o explĆ­cita de git repack -adf pode melhorar o desempenho.

VARIƁVEIS DE CONFIGURAƇƃO

As seguintes definiƧƵes de configuraĆ§Ć£o podem ser usadas para alterar o comportamento do comando git p4. Todos eles estĆ£o na seĆ§Ć£o git-p4.

VariƔveis gerais

git-p4.user

UsuĆ”rio especificado como uma opĆ§Ć£o para todos os comandos p4, com -u <usuĆ”rio>. Em vez disso, pode ser usada a variĆ”vel de ambiente P4USER.

git-p4.password

A senha especificada como uma opĆ§Ć£o para todos os comandos p4, com -P <senha>. Em vez disso, pode ser usada a variĆ”vel de ambiente P4PASS.

git-p4.port

Porta especificada como uma opĆ§Ć£o para todos os comandos p4, com -p <porta>. Em vez disso, pode ser usada a variĆ”vel de ambiente P4PORT.

git-p4.host

O host Ć© especificado como uma opĆ§Ć£o para todos os comandos p4, com -h <host>. Em vez disso, pode ser usada a variĆ”vel de ambiente P4HOST.

git-p4.client

EspecĆ­fico do cliente como uma opĆ§Ć£o para todos os comandos p4, com -c <cliente>, incluindo a definiĆ§Ć£o do cliente.

git-p4.retries

Especifica o nĆŗmero de vezes para tentar novamente um comando p4 (notadamente, p4 sync) se a rede atingir o tempo limite. O valor predefinido Ć© 3. Defina o valor como 0 para desativar as tentativas ou se a sua versĆ£o do p4 nĆ£o for compatĆ­vel com tentativas (anterior a 2012.2).

VariĆ”veis de clonagem e sincronizaĆ§Ć£o

git-p4.syncFromOrigin

Como a importaĆ§Ć£o dos commits de outros repositĆ³rios Git Ć© muito mais rĆ”pido do que a importaĆ§Ć£o do p4, existe um mecanismo para encontrar as alteraƧƵes do p4 primeiro nos repositĆ³rios remotos do Git. Se houver ramificaƧƵes em refs/remote/origin/p4, elas serĆ£o obtidas e usadas ao sincronizar a partir do p4. Essa variĆ”vel pode ser definida como false para desativar este comportamento.

git-p4.branchUser

Uma fase da detecĆ§Ć£o de ramificaĆ§Ć£o envolve a anĆ”lise das ramificaƧƵes do p4 para encontrar as novas ramificaƧƵes que serĆ£o importadas. Ɖ predefinido que todas as ramificaƧƵes sejam inspecionadas. Esta opĆ§Ć£o limita a pesquisa apenas Ć queles pertencentes ao Ćŗnico usuĆ”rio nomeado na variĆ”vel.

git-p4.branchList

Lista das ramificaƧƵes a serem importadas quando a detecĆ§Ć£o das ramificaƧƵes estiver ativada. Cada entrada deve ser um par de nomes das ramificaƧƵes separados por dois-pontos (:). Este exemplo declara que tanto o branchA quanto o branchB foram criados a partir de main:

git config       git-p4.branchList main:branchA
git config --add git-p4.branchList main:branchB
git-p4.ignoredP4Labels

Lista das etiquetas p4 que serĆ£o ignoradas. Isso Ć© criado automaticamente Ć  medida que etiquetas nĆ£o importantes forem descobertas.

git-p4.importLabels

Importe os rĆ³tulos p4 para o git, conforme --import-labels.

git-p4.labelImportRegexp

Apenas os rĆ³tulos p4 coincidentes com esta expressĆ£o regular serĆ£o importados. O valor predefinido Ć© [a-zA-Z0-9_\-.]+$.

git-p4.useClientSpec

Especifique que a especificaĆ§Ć£o do cliente p4 deve ser usada para identificar os caminhos do depĆ³sito p4 de interesse. Isso Ć© equivalente a usar a opĆ§Ć£o --use-client-spec. Consulte a seĆ§Ć£o "ESPECIFICAƇƃO DO CLIENTE" acima. Esta variĆ”vel Ć© um booleano, nĆ£o o nome de um cliente p4.

git-p4.pathEncoding

O "Perforce" mantĆ©m a codificaĆ§Ć£o de um caminho conforme fornecido pelo sistema operacional de origem. O Git espera que os caminhos estejam codificados como UTF-8. Use esta configuraĆ§Ć£o para informar ao git-p4 qual codificaĆ§Ć£o o "Perforce" usou nos caminhos. Esta codificaĆ§Ć£o Ć© usada para transcodificar os caminhos para UTF-8. Por exemplo, o "Perforce" no Windows geralmente usa "cp1252" para codificar os nomes dos caminhos. Se esta opĆ§Ć£o for passada numa solicitaĆ§Ć£o de clone p4, ela serĆ” mantida no novo repositĆ³rio git resultante.

git-p4.metadataDecodingStrategy

O "Perforce" mantĆ©m a codificaĆ§Ć£o das descriƧƵes de uma lista de alteraƧƵes e dos nomes completos dos usuĆ”rios, conforme vĆ£o sendo armazenados pelo cliente num determinado sistema operacional. O cliente p4v usa a codificaĆ§Ć£o local do sistema operacional e, portanto, diferentes usuĆ”rios podem acabar armazenando diferentes descriƧƵes de listas de alteraƧƵes ou nomes completos de usuĆ”rios em diferentes codificaƧƵes, no mesmo depĆ³sito. O Git tolera codificaƧƵes inconsistentes/incorretas nas mensagens de commit e nos nomes dos autores, mas espera que elas sejam especificadas como utf-8. O git-p4 pode usar trĆŖs estratĆ©gias de decodificaĆ§Ć£o diferentes para lidar com a incerteza de codificaĆ§Ć£o no "Perforce": "passthrough" simplesmente passa os bytes originais do "Perforce" para o git, criando dados utilizĆ”veis, mas incorretamente codificados, quando os dados do "Perforce" sĆ£o codificados como algo diferente de utf-8. O strict espera que os dados do "Perforce" sejam codificados como utf-8 e falha na importaĆ§Ć£o quando isso nĆ£o Ć© verdade. O fallback tenta interpretar os dados como utf-8 e, caso contrĆ”rio, volta a usar uma codificaĆ§Ć£o secundĆ”ria - Ć© predefinido que a codificaĆ§Ć£o comum do Windows cp-1252 - com escape de bytes de faixa superior se a decodificaĆ§Ć£o com a codificaĆ§Ć£o de contingĆŖncia tambĆ©m falhar. No python2, a estratĆ©gia padrĆ£o Ć© passthrough por motivos histĆ³ricos, e no python3 a predefiniĆ§Ć£o Ć© fallback. Quando strict for selecionado e a decodificaĆ§Ć£o falhar, a mensagem de erro indicarĆ” a alteraĆ§Ć£o desse parĆ¢metro de configuraĆ§Ć£o como uma soluĆ§Ć£o alternativa. Se esta opĆ§Ć£o for usada numa solicitaĆ§Ć£o de clone p4, ela serĆ” mantida no novo repositĆ³rio git resultante.

git-p4.metadataFallbackEncoding

Especifique a codificaĆ§Ć£o substituta que serĆ” utilizada ao decodificar os nomes dos autores e das descriƧƵes de listas das alteraƧƵes do Perforce usando a estratĆ©gia fallback (consulte git-p4.metadataDecodingStrategy). A codificaĆ§Ć£o substituta sĆ³ serĆ” usada quando a decodificaĆ§Ć£o como utf-8 falhar. Essa opĆ§Ć£o Ć© padronizada para cp1252, uma codificaĆ§Ć£o comum do Windows. Se esta opĆ§Ć£o for passada para uma solicitaĆ§Ć£o de clonagem p4, ela serĆ” mantida no novo repositĆ³rio git resultante.

git-p4.largeFileSystem

Especifique o sistema que Ć© usado para arquivos grandes (binĆ”rios). Observe que os sistemas de arquivos grandes nĆ£o sĆ£o compatĆ­veis com o comando git p4 submit. Apenas o Git LFS estĆ” implementado no momento (para mais informaƧƵes consulte https://git-lfs.github.com/). Baixe e instale a extensĆ£o de linha de comando do Git LFS para usar essa opĆ§Ć£o e configure-a da seguinte maneira:

git config       git-p4.largeFileSystem GitLFS
git-p4.largeFileExtensions

Todos os arquivos que coincidam com uma extensĆ£o do arquivo na lista serĆ£o processados pelo grande sistema de arquivos. NĆ£o prefixe as extensƵes com ..

git-p4.largeFileThreshold

Todos os arquivos onde seu tamanho descompactado exceda o limite, os maiores arquivos serĆ£o processados pelo sistema. A predefiniĆ§Ć£o retorna para que o limite seja definido em bytes. Adicione o sufixo k, m ou g para alterar a unidade.

git-p4.largeFileCompressedThreshold

All files with a compressed size exceeding the threshold will be processed by the large file system. This option might slow down your clone/sync process. Ɖ predefinido que o limite seja definido em bytes. Adicione o sufixo k, m ou g para alterar a unidade.

git-p4.largeFilePush

A variĆ”vel booleana que define se arquivos grandes sĆ£o automaticamente enviados para um servidor.

git-p4.keepEmptyCommits

Uma lista de alteraƧƵes que contenha apenas com os arquivos que foram excluĆ­dos serĆ” importada como um commit vazia, caso esta opĆ§Ć£o estiver configurada como true.

git-p4.mapUser

Mapeie um usuĆ”rio P4 para um nome e endereƧo de e-mail no Git. Para criar um mapeamento, utilize uma sequĆŖncia com o seguinte formato:

git config --add git-p4.mapUser "p4user = Primeiro ƚltimo <mail@address.com>"

Um mapeamento substituirƔ quaisquer informaƧƵes do usuƔrio do P4. Os mapeamentos para os vƔrios usuƔrios P4 podem ser definidos.

Envie as variƔveis

git-p4.detectRenames

Detecte as renomeaƧƵes. Consulte o comando git-diff[1]. Isso pode ser true (verdadeiro), false (falso) ou uma pontuaĆ§Ć£o conforme esperado pelo comando git diff -M.

git-p4.detectCopies

Detecte as cĆ³pias. Consulte o comando git-diff[1]. Isso pode ser true (verdadeiro), false (falso) ou uma pontuaĆ§Ć£o conforme esperado pelo comando git diff -C.

git-p4.detectCopiesHarder

Detecta cĆ³pias com mais intensidade. Consulte o comando git-diff[1]. Um booleano.

git-p4.preserveUser

Ao enviar, recrie as alteraƧƵes do usuƔrio para refletir o autor do Git, independentemente de quem chame o comando git p4 submit.

git-p4.allowMissingP4Users

Quando preserveUser for verdadeiro, o comando git p4 normalmente Ć© encerrado se nĆ£o conseguir encontrar um autor no mapa de usuĆ”rios do p4. Esta configuraĆ§Ć£o envia a alteraĆ§Ć£o de qualquer maneira.

git-p4.skipSubmitEdit

O processo de envio invoca o editor antes de cada alteraĆ§Ć£o do p4 ser enviado. No entanto, se esta configuraĆ§Ć£o for verdadeira, a etapa de ediĆ§Ć£o serĆ” ignorada.

git-p4.skipSubmitEditCheck

ApĆ³s editar a mensagem de alteraĆ§Ć£o do p4, o git p4 se certifica de que a descriĆ§Ć£o foi realmente alterada, observando o tempo de modificaĆ§Ć£o do arquivo. Essa opĆ§Ć£o desativa este teste.

git-p4.allowSubmit

Ɖ predefinido que qualquer ramificaĆ§Ć£o pode ser usado como uma fonte para uma operaĆ§Ć£o git p4 submit. Essa variĆ”vel de configuraĆ§Ć£o, se definida, permite que apenas as ramificaƧƵes mencionadas sejam usadas como origens de envio. Os nomes das ramificaƧƵes devem ser os nomes curtos (sem refs/heads/) e devem ser separados por vĆ­rgulas (","), sem espaƧos.

git-p4.skipUserNameCheck

Se o usuĆ”rio que estiver executando o comando git p4 submit nĆ£o existir no mapa de usuĆ”rios do p4, o git p4 serĆ” encerrado. Esta opĆ§Ć£o pode ser usada para forƧar o envio independentemente disso.

git-p4.attemptRCSCleanup

Caso seja ativado, o git p4 submit tentarĆ” limpar as palavras-chave do RCS ($Header$, etc). Caso contrĆ”rio, eles causariam conflitos na mesclagem e impediriam que o envio prossiga. no momento, esta opĆ§Ć£o deve ser considerada experimental.

git-p4.exportLabels

Exporte as tags Git para os rĆ³tulos p4, conforme a opĆ§Ć£o --export-labels.

git-p4.labelExportRegexp

Somente rĆ³tulos p4 correspondentes a essa expressĆ£o regular serĆ£o exportados. O valor predefinido Ć© [a-zA-Z0-9_\-.]+$.

git-p4.conflict

Especifica o comportamento de envio quando um conflito com o p4 Ć© encontrado, conforme --conflict. O comportamento predefinido Ć© ask.

git-p4.disableRebase

NĆ£o faƧa a reconstruĆ§Ć£o da Ć”rvore contra p4/master apĆ³s um envio.

git-p4.disableP4Sync

NĆ£o sincronize o p4/master com o "Perforce" apĆ³s o envio. Implies git-p4.disableRebase.

DETALHES DA IMPLEMENTAƇƃO

  • Os conjuntos de alteraƧƵes p4 sĆ£o importados utilizando a importaĆ§Ć£o rĆ”pida do Git.

  • A clonagem ou a sincronizaĆ§Ć£o nĆ£o requer um cliente p4; o conteĆŗdo do arquivo Ć© coletado utilizando p4 print.

  • O envio requer um cliente p4, que nĆ£o estĆ” no mesmo local que o repositĆ³rio Git. As correƧƵes sĆ£o aplicados, um de cada vez, a este cliente p4 e enviados a partir dele.

  • Cada commit importado pelo comando git p4 tem uma linha no final da mensagem de registro indicando o local do depĆ³sito p4 e o nĆŗmero da alteraĆ§Ć£o. Essa linha Ć© usada por operaƧƵes posteriores do comando git p4 sync para saber quais as alteraƧƵes do p4 sĆ£o novas.

GIT

Parte do conjunto git[1]

scroll-to-top