Git - podar cada palavra separada por espaços em branco introduzida originalmente por um autor específico na história do projeto

3

Temos um projeto sob controle de revisão git com apenas uma única ramificação. Precisamos remover cada nova palavra separada por espaço em branco que foi introduzida pela primeira vez em um determinado arquivo por um autor específico.

Para esclarecer, neste momento, temos o HEAD verificado. Agora, em um arquivo de exemplo chamado introduction.tex , se houver uma frase "Enlargement of the user-base is beneficial ..." , eu gostaria de um script bash com comandos git adequados que:

  1. Analisa a palavra atual dividida em espaços em branco (no exemplo, para a primeira iteração, isso será Enlargement ). Talvez usando um regex como \b[A-za-z+]\b para detecção de palavras.
  2. Verifique se a palavra tem no mínimo 5 caracteres de comprimento. Caso contrário, continue movendo para a próxima palavra até que essa condição seja satisfeita. Se estiver satisfeito, vá para o nº 3 abaixo.
  3. Verifique todo o histórico do projeto para descobrir quem originalmente fez o commit que introduziu essa palavra.
  4. Se o autor dessa confirmação específica corresponder a johndoe , remova a palavra sob consideração do arquivo.
  5. Repita # 1 - # 4 até que todas as palavras do arquivo tenham sido analisadas e as palavras originais do autor específico sejam removidas.

Tratamento de Palavras de Ocorrência de Alta Frequência:

É importante ignorar palavras-chave comuns como a, an, the, of, for, if, then, but, else, not, any, or, nor . Então, proponho manter o comprimento mínimo em 5 characters na string para que a palavra se qualifique para remoção

Basicamente, a ideia é eliminar ou reverter contribuições de tipo inglês feitas por um autor em particular. Como isso pode ser feito?

Pós-processamento por latexdiff:

Esta questão é para produzir um relatório de diferenças depois de remover as contribuições do autor. Após a remoção do texto (ou seja, depois que eu tiver a resposta para essa pergunta), pretendo usar um script perl padrão, mas incrível latexdiff que pode detectar essas remoções de palavras (ou, na verdade, qualquer outra diferença entre os dois arquivos latex ) e gerar um PDF composto, destacando as palavras removidas com rasuras vermelhas. Tudo o que preciso fazer é identificar e remover as palavras originalmente introduzidas pelo outro autor (ou seja, minha pergunta principal aqui). Portanto, todas as sentenças no pdf composto devem permanecer coerentes sem perda de significado, mas continuarão a reter as palavras removidas ainda no mesmo local, mas, além disso, simplesmente terão marcas de tachas vermelhas sobre elas.

Antecedentes e Contexto:

Isso está em um contexto acadêmico. O projeto git é um repositório LaTeX de um manuscrito. Eu estou em uma disputa de autoria com um co-autor de um artigo que, portanto, não foi submetido a nenhum periódico. Somos ambos estudantes de doutoramento. Para reivindicar cada um dos nossos direitos autorais das palavras para uso em nossas respectivas teses, nosso orientador de PhD solicitou a apresentação de nossas respectivas alegações sobre as palavras introduzidas no manuscrito por cada um de nós, para reutilização em nossas teses e evitar acusações de plágio. Nós dois nos comprometemos com o mesmo repo e agora estou pensando em aproveitar o poder de git e shell , juntamente com git-grep , sed , awk , perl ou o que for para me ajudar a reivindicar o correto palavras eu contribuí com integridade. Sua ajuda será muito apreciada.

Ponto de partida:

git log -S --oneline 'enlargement' -- introduction.tex mostra corretamente a lista de confirmações que tocam nessa palavra que diferencia maiúsculas de minúsculas, ou seja, enlargement nesse caso. O commit mais antigo da lista ajudará a identificar o autor responsável. Estamos simplesmente procurando as "grandes palavras técnicas" que explicam primeiro um conceito. Eu já estou fazendo isso manualmente com o comando starter git. Mas eu preciso automatizar isso porque existem cerca de 10 desses arquivos. Obviamente, não quero fazer isso manualmente para cada palavra de 5 ou mais caracteres em todos os arquivos.

    
por Krishna 18.07.2018 / 13:42

0 respostas