Enquanto escrevo, estamos dentro de 10 dias em 2012. Aposto que muitos programadores estão editando a cadeia de direitos autorais na parte superior de seus arquivos de origem para algo como:
// Copyright 2008, 2010-2012 Some Company Unlimited
Seu sistema de controle de versão sabe quando os arquivos foram modificados; portanto, com certeza ele pode ajudar a escrever ou reescrever essas strings. Então, minha pergunta: existe um script que pode examinar os logs do git para cada arquivo e gerar (ou melhor, inserir) uma string como essa?
Estou usando o git, pelo que é de interesse principal, mas deixe-me saber se esses scripts existem para outros sistemas.
Atualizar:
Precisamos de um script que faça isso:
- Anda em todos os arquivos de origem em nossa cópia de trabalho
- Localiza a cadeia de direitos autorais existente e identifica os anos, por exemplo, 2007,2009-2011 seria {2007, 2009, 2010, 2011}
- Para cada ano não mencionado, difira entre 1 de janeiro e 31 de dezembro (ou hoje, se o ano atual). Examine o diff e decida se vale a pena mencionar na sequência de direitos autorais
- Insira uma nova sequência de direitos autorais.
Respostas:
TL; DR
Não se preocupe! Seus direitos autorais sobre o projeto não expirarão se você não atualizar o ano a tempo! Você está seguro - não funciona dessa maneira.
Versão longa:
Tenho certeza de que todos os números de ano no aviso de direitos autorais indicam o início dos direitos autorais e não o intervalo. Se você adicionar um ano, significa a continuação do início, não do fim. Você o usará se adicionar novo conteúdo (como novos módulos) para indicar o ano inicial apenas para esse novo conteúdo. É opcional, mas deve ser usado para grandes mudanças, como módulos totalmente novos ou uma reforma completa no design.
Os direitos autorais devem expirar após um número fixo de anos (que depende das leis do seu país) após o último ano em seu aviso.
Portanto, não vejo motivo para atualizar os cabeçalhos de origem.
EDITAR:
O fato é que geralmente as mudanças que são substanciais o suficiente envolvem arquivos de origem completamente novos ou uma reimplementação dos antigos. Portanto, desde que você sempre use o ano atual nos cabeçalhos dos novos arquivos de origem, você estará bem. Não há necessidade de passar por todos os arquivos para fazer a atualização. Na verdade, a única coisa que requer uma alteração manual é se você tiver um período no próprio texto da licença ou no arquivo leia-me.
Disclaimer: Eu sou um programador, não um advogado.
fonte
Não é um script em si, mas o recurso Git , que você pode usar para esta tarefa: par de filtro smudge / clean
fonte
Não, o git não sabe quando os arquivos foram modificados.
O objeto Git commit simplesmente define o conteúdo de todos os arquivos em um ponto específico. O mesmo conteúdo pode aparecer facilmente em outro commit, mesmo que não relacionado. Não há nada para tornar um deles mais importante. Portanto, a resposta pode ser ambígua, embora muitas vezes não seja.
fonte
git log
?git log
, ele segue os commits, então é claro que sabe a data deles. Mas pode não saber qual commit introduziu uma versão específica do arquivo, porque pode haver mais de um.git log --follow [filename] | grep -m 1 Date
seria suficiente para obter a data mais recente.