Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
- 2.37.1 → 2.47.0 no changes
- 2.37.0 06/27/22
- 2.35.1 → 2.36.6 no changes
- 2.35.0 01/24/22
- 2.32.1 → 2.34.8 no changes
- 2.32.0 06/06/21
- 2.30.2 → 2.31.8 no changes
- 2.30.1 02/08/21
- 2.30.0 12/27/20
- 2.27.1 → 2.29.3 no changes
- 2.27.0 06/01/20
- 2.21.1 → 2.26.3 no changes
- 2.21.0 02/24/19
- 2.20.1 → 2.20.5 no changes
- 2.20.0 12/09/18
- 2.19.1 → 2.19.6 no changes
- 2.19.0 09/10/18
- 2.18.1 → 2.18.5 no changes
- 2.18.0 06/21/18
- 2.17.0 → 2.17.6 no changes
- 2.16.6 12/06/19
- 2.13.7 → 2.15.4 no changes
- 2.12.5 09/22/17
- 2.10.5 → 2.11.4 no changes
- 2.9.5 07/30/17
- 2.8.6 07/30/17
- 2.7.6 07/30/17
- 2.6.7 05/05/17
- 2.5.6 05/05/17
- 2.4.12 05/05/17
- 2.1.4 → 2.3.10 no changes
- 2.0.5 12/17/14
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:
-
Cria um repositĆ³rio Git vazio num subdiretĆ³rio chamado project.
-
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.
-
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.
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]