Um conflito de controle de revisão ocorre quando um indivíduo tenta enviar alterações feitas na versão local do projeto, as quais não podem ser reconciliadas com a última fonte de verdade no controle de revisão.
Tal fato pode acontecer por vários motivos, mas geralmente ocorre quando um indivíduo faz alterações em uma parte de um projeto de equipe na qual um colega de equipe também fez alterações. Enviar as alterações sem primeiro sincronizar as alterações dos colaboradores causa um conflito.
A melhor maneira para que você e seus colegas de equipe evitem conflitos é manter as opções de check-out automático e desfazer automaticamente habilitadas. Use melhores práticas de controle de revisão para reduzir os conflitos do projeto e entender melhor como o controle de revisão funciona.
Avisos de prevenção de conflitos com as opções de check-out automático e desfazer automaticamente
O Unreal Revision Control evita conflitos habilitando as opções de check-out automático e desfazer automaticamente quando um projeto é criado usando o controle de revisão.
Essas funcionalidades operam em conjunto para tentar fazer o check-out de um ativo automaticamente quando uma alteração é feita nele e desfazer a alteração automaticamente se o check-out falhar. O sistema aciona um aviso de que isso ocorreu para evitar a ocorrência de um conflito.
Esses avisos são acionados principalmente nos dois cenários a seguir:
Tentar fazer alterações em ativos que um colega de equipe fez check-out
Se você tentar fazer alterações em ativos que um colega de equipe fez check-out, as alterações serão desfeitas automaticamente para evitar alterações em ativos que o colega de equipe fez check-out exclusivamente.
Não é necessário realizar nenhuma ação quando isso acontecer, porque o conflito já terá sido evitado. Porém, se você precisar fazer alterações no ativo em questão, é melhor coordenar com seu colega de equipe para que ele realize o check-in, sincronize as últimas alterações para que, só aí, você prossiga com as alterações.
Na primeira vez que isso ocorrer, você verá o seguinte modal de aviso, informando quais de suas alterações foram desfeitas e para quem foi feito o check-out. Se desejar ver sempre esse aviso, desmarque a caixa de seleção "Não mostrar novamente".
Em seguida, uma notificação toast informará você sempre que isso ocorrer.
Tentar fazer alterações de ativos não sincronizados com a versão mais recente
Se você tentar fazer alterações em um ativo para o qual ainda não sincronizou a versão mais recente, elas serão desfeitas automaticamente para evitar que se façam alterações das quais não se possa fazer o check-in posteriormente.
Nesse caso, basta sincronizar a versão mais recente e prosseguir com as alterações.
A primeira vez que esse problema ocorrer, você verá o seguinte modal de aviso, informando quais de suas alterações foram desfeitas. Se desejar ver sempre esse aviso, desmarque a caixa de seleção "Não mostrar novamente".
Em seguida, uma notificação toast informará você sempre que isso ocorrer.
Mensagem de erro de conflito
Os conflitos são mais comuns quando as opções de check-out automático e desfazer automaticamente estão desligadas. As circunstâncias que causam conflitos no Unreal Revision Control incluem:
- Não sincronizar com frequência para a versão mais recente
- Fazer alterações sem primeiro realizar o check-out do ativo
- Trabalhar off-line
As seções a seguir tratam de erros de conflito e causas comuns que você pode encontrar.
Não é a versão mais recente
Um tipo de conflito ocorre quando você tenta sincronizar a versão mais recente ou fazer o check-in de alterações de um ativo que foi alterado e sofreu check-out por outra pessoa em um instantâneo mais recente do que aquele que você sincronizou mais recentemente.
Um conflito ocorre neste caso porque você fez alterações em uma versão desatualizada do ativo.
Nesse caso, uma mensagem de erro é exibida informando quais ativos estão em conflito e quem fez as alterações mais recentes que devem ser sincronizadas. Sua única opção para resolver o conflito é sincronizar as alterações mais recentes e substituir as suas.
Depois disso, você pode fazer o check-out dos ativos que deseja alterar e, posteriormente, realizar e fazer o check-in de suas alterações.
Conflitos de ativos que sofreram check-out
Outro tipo de conflito ocorre quando você faz alterações em um ativo cujo check-out foi feito por outra pessoa e você tenta sincronizar as alterações mais recentes ou fazer o check-in.
O conflito ocorre porque você fez alterações em algo que não tem o direito de editar, pois outro colega de equipe fez o check-out exclusivamente.
Nesse caso, você receberá um erro informando quais ativos alterou e dos quais não fez o check-out e as instruções para coordenar com seu colega de equipe.
Se desejar desconsiderar suas alterações, você pode revertê-las em ativos conflitantes individuais por meio do menu de contexto do controle de revisão e tentar sincronizar ou fazer o check-in novamente.
Conflitos de ativos duplicados
Um terceiro e raro tipo de conflito pode ocorrer se dois colegas de equipe criarem acidentalmente ativos com o mesmo nome e caminho de arquivo e tentarem salvá-los e fazer o check-in desses objetos de forma independente. A primeira pessoa a fazer o check-in terá sucesso, mas a segunda receberá uma mensagem de erro.
Renomear o segundo objeto é a melhor opção, que não resulta na exclusão do objeto. Uma alternativa seria alterar a localização do ativo na hierarquia do projeto, pois desde que o caminho do arquivo seja diferente, não haverá conflitos.
Trabalhar off-line
Embora alguns trabalhos possam continuar em um projeto do UEFN enquanto se está off-line, isso não é aconselhável. Trabalhar off-line cria o risco de causar conflitos com colegas, pois não é possível realizar o check-out de ativos sem uma conexão com a internet, e duas pessoas podem acabar trabalhando com algo igual ao mesmo tempo.
Se você trabalhar off-line, recomenda-se que:
- Comunique-se com seus colegas de equipe com antecedência sobre no que pretende trabalhar e, se possível, faça o check-out de todos os ativos antes de perder a conexão.
- Restabeleça a conexão com a internet o mais rápido possível, sincronize a versão mais recente e faça o check-in das alterações que realizou.