Skip to content

Latest commit

 

History

History
159 lines (117 loc) · 6.48 KB

README.md

File metadata and controls

159 lines (117 loc) · 6.48 KB

CC BY-SA 4.0

Guia para uso de Git em projetos Unity

Este guia assume que o seguinte software está instalado num sistema Windows 10:

Alguns detalhes poderão ser ligeiramente diferentes em Mac e Linux.

Configuração dos projetos Unity

Confirmar as seguintes definições em cada novo projeto no Unity (em princípio são as definições por omissão):

  • Edit → Project Settings → Version Control
    1. Mode → Visible Meta Files
  • Edit → Project Settings → Editor
    1. Asset Serialization, Mode → Force Text
  • Edit → Project Settings → Player
    1. API Compatibility Level → .NET Standard 2.1

Configuração do Git

Ficheiros de configuração

Colocar na pasta raiz do projeto Unity os seguintes ficheiros:

  • .gitignore - Indica ficheiros temporários a ignorar, ou seja, que não serão guardados no repositório.
  • .gitattributes - Entre outras coisas, indica ficheiros a guardar em modo Git LFS, nomeadamente ficheiros binários (imagens, sons, texturas, vídeos, etc).

A forma mais simples de o fazer é abrir cada um dos links no browser e fazer CTRL+S para salvar cada um dos ficheiros. Os ficheiros devem ser guardados na pasta raiz do projeto Unity e devem ter exatamente os nomes .gitignore e .gitattributes.

Inicializar repositório

Abrir Git Bash na pasta do projeto (ou fazer cd até à pasta do projeto), e inicializar o repositório Git com o seguinte comando:

  • git init

Inicializar Git LFS para o repositório criado:

  • git lfs install

Configuração para gestão de merge conflicts

Configuração ao nível do Git

Na pasta do projeto editar ficheiro config na pasta .git e colocar o seguinte no fim do mesmo (confirma que o caminho completo até à ferramenta UnityYAMLMerge está correto - nota que são necessário duas barras entre cada pasta):

[merge]
	tool = unityyamlmerge
[mergetool "unityyamlmerge"]
	trustExitCode = false
	cmd = 'C:\\Program Files\\Unity\\Hub\\Editor\\2018.3.0f2\\Editor\\Data\\Tools\\UnityYAMLMerge.exe' merge -p "$BASE" "$REMOTE" "$LOCAL" "$MERGED"
[mergetool]
	keepBackup = false

Se a instalação do Unity onde se encontra a ferramenta UnityYAMLMerge for removida, é necessário atualizar o ficheiro .git\config para procurar a ferramenta na nova instalação do Unity.

Configuração ao nível do Unity

A mesma pasta que contém a ferramenta UnityYAMLMerge contém também o seu ficheiro de configuração, de nome mergespecfile.txt. Abrir este ficheiro com o Notepad++ e substituir as linhas:

unity use "%programs%\YouFallbackMergeToolForScenesHere.exe" "%l" "%r" "%b" "%d"
prefab use "%programs%\YouFallbackMergeToolForPrefabsHere.exe" "%l" "%r" "%b" "%d"

por

unity use "%programs%/KDiff3/kdiff3.exe" "%b" "%l" "%r" -o "%d"
prefab use "%programs%/KDiff3/kdiff3.exe" "%b" "%l" "%r" -o "%d"
* use "%programs%/KDiff3/kdiff3.exe" "%b" "%l" "%r" -o "%d"

São necessárias permissões de administrador para alterar o ficheiro. Ao guardar o ficheiro o Notepad++ pergunta se queres abrir o mesmo com permissões de administrador. Confirma, volta a inserir as modificações e guarda o ficheiro.

Se a instalação do Unity onde se encontra o ficheiro mergespecfile.txt for removida, é necessário modificar o ficheiro mergespecfile.txt da nova instalação do Unity de igual forma.

Fazer merge de ramos diferentes em projetos Unity

Por exemplo, se estivermos no ramo master e quisermos fazer merge do ramo new-boss, vamos executar o seguinte comando git merge new-boss. Se existirem conflitos que o Git não conseguir resolver, o resultado vai ser algo do género:

Auto-merging Assets/Scenes/MyScene.unity
CONFLICT (content): Merge conflict in Assets/Scenes/MyScene.unity
Automatic merge failed; fix conflicts and then commit the result.

Para resolver os conflitos, vamos invocar a ferramenta configurada para o efeito com o comando git mergetool. A maioria dos conflitos é resolvida automaticamente. No caso dos conflitos não resolvidos será aberta uma janela do KDiff3, tendo o utilizador apenas de especificar, para cada conflito, se quer utilizar as modificações do ramo master ou do ramo new-boss, e guardar essas escolhas. Os conflitos são marcados como resolvidos e basta fazer git commit para finalizar o merge.

Configurar Git para usar Notepad++ nas mensagens de commit

Por omissão o Git usa o editor Vim para as mensagens de commit. No entanto, é muito mais prático usar um editor como o Notepad++. O seguinte comando configura o Git para usar o Notepad++ nas mensagens de commit (assume-se que o Notepad++ está instalado na pasta indicada, caso contrário alterar em conformidade):

git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

Uma vez que é especificada a opção --global, basta executar este comando uma vez para que o Notepad++ fique configurado para todos os repositórios Git de um dado utilizador no mesmo PC.

Referências