<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Fabricio Nogueira</title>
    <description>The latest articles on DEV Community by Fabricio Nogueira (@nogsantos).</description>
    <link>https://dev.to/nogsantos</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F97553%2F7e0f595f-8f8d-40b8-a5db-b8c9fefce7e9.jpeg</url>
      <title>DEV Community: Fabricio Nogueira</title>
      <link>https://dev.to/nogsantos</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nogsantos"/>
    <language>en</language>
    <item>
      <title>Como gerar e manter o histórico do código com o git log.</title>
      <dc:creator>Fabricio Nogueira</dc:creator>
      <pubDate>Mon, 18 Jul 2022 12:19:29 +0000</pubDate>
      <link>https://dev.to/nogsantos/como-gerar-e-manter-o-historico-do-codigo-com-o-git-log-3ci8</link>
      <guid>https://dev.to/nogsantos/como-gerar-e-manter-o-historico-do-codigo-com-o-git-log-3ci8</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Z0CGIKg7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zbflexsiugmu4253i4oe.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Z0CGIKg7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zbflexsiugmu4253i4oe.jpg" alt="Image description" width="880" height="370"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A documentação do projeto, mantendo um padrão e um bom histórico das mensagens de commit, pode ser gerada com o comando &lt;code&gt;git log&lt;/code&gt;. Arquivo de mudanças &lt;code&gt;CHANGELOG&lt;/code&gt;, ou as notas de release &lt;code&gt;RELEASE NOTES&lt;/code&gt;, podem facilitar bastante a manutenção e rastreabilidade no código.&lt;/p&gt;

&lt;p&gt;O subcomando &lt;code&gt;log&lt;/code&gt; do &lt;code&gt;git&lt;/code&gt; mostra todos os commits em um repositório e é uma ferramenta útil para inspecionar o histórico de um projeto. Sua saída pode gerar documentação do projeto, como notas de versão e registros de mudanças. Definir mensagens de commits claras e significativas, pode ser uma ferramenta poderosa no kit de ferramentas de documentação do projeto.&lt;/p&gt;

&lt;p&gt;Um bom histórico de commits pode ser alcançado utilizando boas práticas como as descritas no modelo &lt;a href="https://www.conventionalcommits.org/pt-br/v1.0.0-beta.4/"&gt;Conventional Commits&lt;/a&gt; que propõe um conjunto de regras para criar um histórico de commits explícito, facilitando a criação ou utilização de ferramentas automatizadas com esse propósito.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gerando notas alterações ou releases
&lt;/h2&gt;

&lt;p&gt;É possível gerar informando as tags que serão filtradas&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git log &lt;span class="nt"&gt;--oneline&lt;/span&gt; v0.1.0...v0.1.1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As saídas dos comandos podem ser redirecionadas para um arquivo, como no exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git log &lt;span class="nt"&gt;--oneline&lt;/span&gt; v0.1.0...v0.1.1 &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; CHANGELOG &lt;span class="c"&gt;# OR RELEASE_NOTES&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;O arquivo definido na saída do comando, pode ser versionado ou utilizado em alguma ferramenta que apresente aos usuários o que foi alterado no último release do sistema.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A flag de formatação &lt;code&gt;--online&lt;/code&gt; define que queremos uma versão condensada de cada commit, um commit por linha.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;13abc49 docs&lt;span class="o"&gt;(&lt;/span&gt;about&lt;span class="o"&gt;)&lt;/span&gt;: improves about page infos
9f4c7c3 ci&lt;span class="o"&gt;(&lt;/span&gt;fix&lt;span class="o"&gt;)&lt;/span&gt;: adjustments on deploy stages
caf2d83 build&lt;span class="o"&gt;(&lt;/span&gt;migration&lt;span class="o"&gt;)&lt;/span&gt;: migrates site to firebase
070da73 refactor&lt;span class="o"&gt;(&lt;/span&gt;content&lt;span class="o"&gt;)&lt;/span&gt;: It centralizes the way to load content
4ef6b8d &lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;dynamics&lt;span class="o"&gt;)&lt;/span&gt;: Fix tests
cfd6bd5 fix&lt;span class="o"&gt;(&lt;/span&gt;project&lt;span class="o"&gt;)&lt;/span&gt;: Fix SEO and improve fetch
2ee58e5 ci&lt;span class="o"&gt;(&lt;/span&gt;workflow&lt;span class="o"&gt;)&lt;/span&gt;: Update ci
0d29391 ci&lt;span class="o"&gt;(&lt;/span&gt;actions&lt;span class="o"&gt;)&lt;/span&gt;: Fix environment var names
7648d85 build&lt;span class="o"&gt;(&lt;/span&gt;nuxt&lt;span class="o"&gt;)&lt;/span&gt;: Update project dependencies
...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Customizando o output do log&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Para definir quais serão os valores informados no log, adequando às necessidades do projeto, é possível utilizar a flag &lt;code&gt;--format&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git log &lt;span class="nt"&gt;--format&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&amp;gt;&amp;gt; %h %s"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nesse exemplo, removendo o hash na saída. Mais opções de filtros, podem ser encontradas na documentação no tópico &lt;a href="https://www.git-scm.com/docs/git-log#_pretty_formats"&gt;PRETTY FORMATS&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; ci&lt;span class="o"&gt;(&lt;/span&gt;scp&lt;span class="o"&gt;)&lt;/span&gt;: removes scp deploy task
&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; docs&lt;span class="o"&gt;(&lt;/span&gt;about&lt;span class="o"&gt;)&lt;/span&gt;: improves about page infos
&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; ci&lt;span class="o"&gt;(&lt;/span&gt;fix&lt;span class="o"&gt;)&lt;/span&gt;: adjustments on deploy stages
&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; build&lt;span class="o"&gt;(&lt;/span&gt;migration&lt;span class="o"&gt;)&lt;/span&gt;: migrates site to firebase
&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; refactor&lt;span class="o"&gt;(&lt;/span&gt;content&lt;span class="o"&gt;)&lt;/span&gt;: It centralizes the way to load content
&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;dynamics&lt;span class="o"&gt;)&lt;/span&gt;: Fix tests
&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; fix&lt;span class="o"&gt;(&lt;/span&gt;project&lt;span class="o"&gt;)&lt;/span&gt;: Fix SEO and improve fetch
&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; ci&lt;span class="o"&gt;(&lt;/span&gt;workflow&lt;span class="o"&gt;)&lt;/span&gt;: Update ci
&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; ci&lt;span class="o"&gt;(&lt;/span&gt;actions&lt;span class="o"&gt;)&lt;/span&gt;: Fix environment var names
&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; build&lt;span class="o"&gt;(&lt;/span&gt;nuxt&lt;span class="o"&gt;)&lt;/span&gt;: Update project dependencies
...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Shortlog
&lt;/h2&gt;

&lt;p&gt;O comando &lt;code&gt;shortlog&lt;/code&gt; é especialmente útil ao gerar notas de versão para projetos com muitos colaboradores. É possível gerar uma saída com os commits agrupados por autor e classificados por nome.&lt;/p&gt;

&lt;p&gt;Juntamente com o &lt;code&gt;--format&lt;/code&gt;, informando a flag &lt;code&gt;-n&lt;/code&gt; é possível visualizar a quantidade de commits por autor.&lt;/p&gt;

&lt;p&gt;O comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git shortlog &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="nt"&gt;--format&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"%s"&lt;/span&gt; 3.2.7...3.2.8
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Produz a saída:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Mariusz Felisiak &lt;span class="o"&gt;(&lt;/span&gt;7&lt;span class="o"&gt;)&lt;/span&gt;:
      &lt;span class="o"&gt;[&lt;/span&gt;3.2.x] Post-release version bump.
      &lt;span class="o"&gt;[&lt;/span&gt;3.2.x] Added stub release notes &lt;span class="k"&gt;for &lt;/span&gt;Django 3.2.8.
      &lt;span class="o"&gt;[&lt;/span&gt;3.2.x] Fixed &lt;span class="c"&gt;#33082 -- Fixed CommandTests.test_subparser_invalid_option on Python 3.9.7+.&lt;/span&gt;
      &lt;span class="o"&gt;[&lt;/span&gt;3.2.x] Corrected outputs and made cosmetic edits &lt;span class="k"&gt;in &lt;/span&gt;GeoDjango tutorial.
      &lt;span class="o"&gt;[&lt;/span&gt;3.2.x] Used :rfc: role &lt;span class="k"&gt;in &lt;/span&gt;docs/topics/conditional-view-processing.txt.
      &lt;span class="o"&gt;[&lt;/span&gt;3.2.x] Fixed broken links and redirects &lt;span class="k"&gt;in &lt;/span&gt;docs.
      &lt;span class="o"&gt;[&lt;/span&gt;3.2.x] Corrected field and model check messages &lt;span class="k"&gt;in &lt;/span&gt;docs.

Carlton Gibson &lt;span class="o"&gt;(&lt;/span&gt;3&lt;span class="o"&gt;)&lt;/span&gt;:
      &lt;span class="o"&gt;[&lt;/span&gt;3.2.x] Fixed &lt;span class="c"&gt;#33083 -- Fixed selecting all items in the admin changelist when actions are both top and bottom.&lt;/span&gt;
      &lt;span class="o"&gt;[&lt;/span&gt;3.2.x] Added release &lt;span class="nb"&gt;date &lt;/span&gt;&lt;span class="k"&gt;for &lt;/span&gt;3.2.7.
      &lt;span class="o"&gt;[&lt;/span&gt;3.2.x] Bumped version &lt;span class="k"&gt;for &lt;/span&gt;3.2.8 release.

Adam Johnson &lt;span class="o"&gt;(&lt;/span&gt;1&lt;span class="o"&gt;)&lt;/span&gt;:
      &lt;span class="o"&gt;[&lt;/span&gt;3.2.x] Refs &lt;span class="c"&gt;#31055 -- Doc'd 'databases' argument of check functions.&lt;/span&gt;

Claude Paroz &lt;span class="o"&gt;(&lt;/span&gt;1&lt;span class="o"&gt;)&lt;/span&gt;:
      &lt;span class="o"&gt;[&lt;/span&gt;3.2.x] Removed obsolete GEOS 3.5 requirement note.

David Sanders &lt;span class="o"&gt;(&lt;/span&gt;1&lt;span class="o"&gt;)&lt;/span&gt;:
      &lt;span class="o"&gt;[&lt;/span&gt;3.2.x] Clarified &lt;span class="nb"&gt;type &lt;/span&gt;of Window&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="s1"&gt;'s partition_by and order_by arguments.

David Smith (1):
      [3.2.x] Doc'&lt;/span&gt;d Jinja2 form renderer.

Jacob Walls &lt;span class="o"&gt;(&lt;/span&gt;1&lt;span class="o"&gt;)&lt;/span&gt;:
      &lt;span class="o"&gt;[&lt;/span&gt;3.2.x] Fixed typo &lt;span class="k"&gt;in &lt;/span&gt;docs/topics/i18n/formatting.txt.

Ken Whitesell &lt;span class="o"&gt;(&lt;/span&gt;1&lt;span class="o"&gt;)&lt;/span&gt;:
      &lt;span class="o"&gt;[&lt;/span&gt;3.2.x] Fixed &lt;span class="c"&gt;#33077 -- Fixed links to related models for admin's readonly fields in custom admin site.&lt;/span&gt;

Sarah Abderemane &lt;span class="o"&gt;(&lt;/span&gt;1&lt;span class="o"&gt;)&lt;/span&gt;:
      &lt;span class="o"&gt;[&lt;/span&gt;3.2.x] Refs &lt;span class="c"&gt;#27694 -- Doc'd lookups that can be chained with HStoreField key transforms.&lt;/span&gt;

Steven Maude &lt;span class="o"&gt;(&lt;/span&gt;1&lt;span class="o"&gt;)&lt;/span&gt;:
      &lt;span class="o"&gt;[&lt;/span&gt;3.2.x] Fixed typo &lt;span class="k"&gt;in &lt;/span&gt;docs/intro/reusable-apps.txt.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Referências
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.git-scm.com/docs/git-log"&gt;https://www.git-scm.com/docs/git-log&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.conventionalcommits.org/pt-br/v1.0.0-beta.4/"&gt;https://www.conventionalcommits.org/pt-br/v1.0.0-beta.4/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/django/django/"&gt;https://github.com/django/django/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>git</category>
      <category>logs</category>
      <category>changelog</category>
      <category>releasenotes</category>
    </item>
  </channel>
</rss>
