Seminário de Andamento Módulo: Merge Grupo 5 André Ribeiro Coelho Rafael de Souza Santos Módulo: Merge Responsabilidade • Possibilitar a junção de ramos assim como a junção de desenvolvimento paralelo nos espaços de trabalho Clientes • Espaço de trabalho • API Servidor Dependências • Algoritmos de diff e patch 2 Tipos de Merge Two-way x Three-way Yang, 1994 3 Conflitos Textual Sintático Semântico 4 Conflitos 5 Técnicas de Detecção de Conflitos Matrizes Merge Conjuntos de Conflitos Técnicas de detecção de conflitos semânticos 6 Algoritmos Delta Merge baseado em texto tipicamente o utiliza para reduzir o espaço em disco Tipos de delta simétrico vs direto textual, sintático ou semântico forward ou backward state-based ou change-based 7 Algoritmos Delta Simétrico vs direto simétrico calcula a diferença entre dois arquivos como um conjunto de diferença direto especifica a diferença através de operações de modificação 8 Algoritmos Delta Textual, sintático ou semântico textual diferença entre dois arquivos sintático diferença entre duas representações sintáticas semântico diferença semântica entre duas versões 9 Algoritmos Delta Forward ou backward forward armazena a primeira versão e as demais são geradas através de deltas backward armazena a última versão e as anteriores são geradas através de deltas 10 Algoritmos Delta State-based ou change-based state-based calcula a diferença entre a revisão e o seu ancestral e armazena somente a diferença change-based especifica a diferença através de operações de modificação 11 Algoritmos Delta change-based embedded deltas mudanças são anotadas em cada versão de maneira a especificar suas diferenças relativas a outra versão change-set mudanças podem ser especificadas independentemente das versões as quais elas são aplicadas 12 Decisões de projeto Independentes de domínio e customizáveis o quão independente do domínio é? Granularidade o quão de detalhe o conflito detecta? Escalabilidade e eficiência em termos de processamento e uso de memória quando o tamanho do software aumenta como se comporta? 13 Decisões de projeto Grau de automatização manual? semi-automática? automática? 14 Definição da Interface 1º release Merge de arquivos ou diretórios File Método(File base, File arq1, File arq2) Dir Método(Dir base, Dir arq1, Dir arq2) Merge de arquivos texto Granularidade na linha Módulo isolado 15 Definição da Interface 2º release Módulo mais integrado Tentativa de maior relação com o algoritmo de diff Levar em consideração a estratégia de armazenamento se possível Estudo de outras alternativas 16 Referências Mens, T. A State-of-the-Art Survey on Software Merging. IEEE Trans. Softw. Eng., v.28, n.5, p.449-462. 2002 Yang, W. How to Merge Program Texts. J. Systems and Software, vol. 27, no. 2, pp. 129-135, 1994 Horwitz, S. Identifying the Semantic and Textual Differences Between Two Versions of a Program. Proc. SIGPLAN ‘90 Conf. Programming Language Design and Implementation, pp. 234-244, 1990 17 Seminário de Andamento Módulo: Merge Grupo 5 André Ribeiro Coelho Rafael de Souza Santos