Às vezes, seria bom poder dizer algo como:
(git|svn|hg|etc) diff Foo.c:main
(git|svn|hg|etc) log log Foo.c:main
para ver as alterações feitas em uma função específica em um arquivo de origem desde a última confirmação ou o histórico completo das alterações. Minha pergunta é dupla:
- Existe algo que faz isso?
- Essa ferramenta seria prática? Teria que fazer uma análise simples do código em cada revisão para comparar diferentes versões da função; a sobrecarga seria demais para ser eficiente?
version-control
tools
jches
fonte
fonte
Respostas:
Mais importante, porém, você precisaria fazer o mesmo para todos os idiomas que deseja oferecer suporte. Um VCS cujo ponto de venda funciona apenas no código C não terá muita tração. Mesmo se você ignorar todos os idiomas obscuros, seria uma tarefa enorme oferecer suporte até aos 10 principais idiomas.
E, como Robert apontou, ser capaz de pular imediatamente para um método não é um grande ganho em ter que pular manualmente para o método na ferramenta diff.
fonte
svn realmente faz algo parecido com o que você quer.
Você pode usar o comando:
O
-x -p
nome da função fornece 'C' na parte superior do conjunto de alterações. que se parece com isso.Ele não filtra, mas você pode grep / search para servir de perto o seu propósito.
Eu acho que isso é apenas para 'C' (ou C / C ++). No entanto, eu acho que, se houver uma demanda, o svn também estará disponível para outros idiomas.
Não concordo com o argumento de que o VCS NÃO deve fazer isso. Afinal, queremos que todos os IDEs ou editores (como VIM, EMACS) realcem a sintaxe, que é específica para cada idioma e suporta muitos simultaneamente. Portanto, o VCS, sendo uma ferramenta de desenvolvedor, também deve suportar essa funcionalidade.
Claro, graças à sua pergunta que eu a descobri. Eu nunca tinha usado antes.
fonte
Sem entrar em detalhes, ... mas você pode conferir o site Semantic Designs e sua gama de produtos. Eles oferecem algumas ferramentas sensíveis à linguagem , por assim dizer, na falta de um termo melhor.
fonte
O Monticello pode fazer isso (por exemplo, http://wiresong.ca/monticello/v2/docs/changes-browser.html ), mas é claro que isso é trapaça escandalosamente porque funciona apenas para Smalltalk.
fonte
Para mostrar qual revisão e autor modificaram pela última vez cada linha de um arquivo:
fonte
ENVY e armazenar tanto fazer isso. É interessante que, assim como Monicello, que Logan Capaldo mencionou acima, também é para Smalltalk.
fonte