<?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: oerickmuller</title>
    <description>The latest articles on DEV Community by oerickmuller (@oerickmuller).</description>
    <link>https://dev.to/oerickmuller</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%2F1102313%2Fe1fc7e1e-5fac-4d0a-b9f6-f6c29ecce6c9.png</url>
      <title>DEV Community: oerickmuller</title>
      <link>https://dev.to/oerickmuller</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/oerickmuller"/>
    <language>en</language>
    <item>
      <title>jj, ou o git de forma diferente</title>
      <dc:creator>oerickmuller</dc:creator>
      <pubDate>Tue, 02 Sep 2025 20:52:05 +0000</pubDate>
      <link>https://dev.to/oerickmuller/jj-ou-o-git-de-forma-diferente-4ifi</link>
      <guid>https://dev.to/oerickmuller/jj-ou-o-git-de-forma-diferente-4ifi</guid>
      <description>&lt;p&gt;Conheci há umas semanas o jujutsu (jj), um cli que apresenta uma alternativa para a operação do git. Na verdade, dizer que é um &lt;em&gt;cli&lt;/em&gt; diminui muito o que esta ferramenta é, e faz. &lt;/p&gt;

&lt;p&gt;Ao contrário do git, que trabalha com commits e branches, de forma isoladas, o conceito principal é de trabalhar com checkpoints de um estado atual. &lt;/p&gt;

&lt;p&gt;Se estamos trabalhando em um projeto qualquer, não apenas de software, pensamos em &lt;strong&gt;incrementos&lt;/strong&gt;. Algo começa, e a cada ciclo, fazemos alterações. Usualmente, definimos o que será feito, fazemos, e finalmente encerramos este ciclo, começando outro. Todas as alterações feitas são parte deste ciclo. &lt;/p&gt;

&lt;p&gt;O jj adota esta ideia como base para o controle de versões de código. &lt;/p&gt;

&lt;p&gt;Usualmente, o processo com o git passa por criar um branch, fazer todas as alterações nesse branch, e posteriormente unir este branch ao principal. Criamos um espaço separado para o código sendo construído. &lt;/p&gt;

&lt;p&gt;Usando o jj, o processo muda um pouco. Estamos sempre trabalhando em um estado atual de código, e quanto terminamos, criamos outro. E assim por diante. Sempre que terminamos uma alteração, temos um novo &lt;code&gt;changeset&lt;/code&gt; que identifica conjunto de alterações agrupados, e o histórico é criado em uma sucessão de revsets. &lt;/p&gt;

&lt;p&gt;Como estamos sempre trabalhando com o estado atual do código, não existe staging area nem a necessidade de adicionar os arquivos para um commit. Partimos do princípio que tudo tem que ser adicionado àquele revset, e ao criar um novo &lt;code&gt;changeset&lt;/code&gt;, automaticamente temos o estado do &lt;code&gt;changeset&lt;/code&gt; atual salvo. &lt;/p&gt;

&lt;p&gt;Se ficou complexo, vamos ver um exemplo. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;A lista de comandos usados abaixo está &lt;a href="https://gist.github.com/oerickmuller/edff26ab52a0ed29659e0e5c7e86cba3" rel="noopener noreferrer"&gt;aqui&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnivt0uia0pzhpxwovze1.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnivt0uia0pzhpxwovze1.gif" alt="Exemplo de uso" width="688" height="548"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Esse exemplo é simples, apenas para mostrar como a ideia de &lt;code&gt;changeset&lt;/code&gt; funciona. Temos muito mais possibilidades, como criar changesets baseados em um &lt;code&gt;changeset&lt;/code&gt; anterior, publicar changesets como branches, fazer rebases, e assim por diante. &lt;/p&gt;

&lt;p&gt;Existe um guia muito bom sobre isso em &lt;a href="https://steveklabnik.github.io/jujutsu-tutorial/" rel="noopener noreferrer"&gt;https://steveklabnik.github.io/jujutsu-tutorial/&lt;/a&gt;, que é ótimo para aprender mais sobre esta ferramenta. &lt;/p&gt;

&lt;p&gt;E, interessante saber: tem suporte a tudo o que o git faz. Tudo mesmo. Mas às vezes de uma forma diferente. Dá pra trabalhar com repositórios remotos, diferentes changesets a partir de um inicial e posterior rebase, e assim por diante. &lt;/p&gt;

&lt;p&gt;Já conheciam a ferramenta? Se interessaram, e querem saber mais? Se sim, deixa uma mensagem aqui, e eu vou respondendo, e quem sabe até fazer uma continuação. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Experiência pessoal:&lt;/em&gt; estou usando em projetos pessoais, de código e de escrita. A principal vantagem tem sido, pra mim, a possibilidade de pensar o processo de gerenciamento de alterações de forma mais natural, adequado com a forma de ver a organização de projetos, onde definimos o que vamos fazer, fazemos, testamos, e fechamos, iniciando uma nova parte. Na minha visão, é o futuro do git. E isso não é só minha opinião. &lt;/p&gt;

</description>
    </item>
    <item>
      <title>Exportar markdown para docx usando o pandoc</title>
      <dc:creator>oerickmuller</dc:creator>
      <pubDate>Wed, 13 Aug 2025 18:04:26 +0000</pubDate>
      <link>https://dev.to/oerickmuller/exportar-markdown-para-docx-usando-o-pandoc-4n01</link>
      <guid>https://dev.to/oerickmuller/exportar-markdown-para-docx-usando-o-pandoc-4n01</guid>
      <description>&lt;p&gt;Versão em vídeo: &lt;a href="https://www.youtube.com/watch?v=R4kf6lqkSl8" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=R4kf6lqkSl8&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Se você está trabalhando com documentações versionadas, uma das melhores saídas é o conjunto markdown + git. Assim, consegue controlar as edições de forma simples, e usando um mecanismo de formatação muito robusto. &lt;/p&gt;

&lt;p&gt;E quando o time que não usa markdown precisa de acesso a estes documentos, e exige que seja enviado em formato &lt;strong&gt;doc&lt;/strong&gt; ou &lt;strong&gt;docx&lt;/strong&gt;, como fazer? É nesse momento que o &lt;strong&gt;pandoc&lt;/strong&gt; entra em ação. &lt;/p&gt;

&lt;p&gt;O pandoc é uma ferramenta de conversão de arquivos de texto para diferentes formatos, que funciona de forma extremamente simples. Como o exemplo abaixo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pandoc restricoes.md -o restricoes.pdf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Convertemos o documento &lt;code&gt;restricoes.md&lt;/code&gt; para o formato pdf de jeito rápido e simples. &lt;/p&gt;

&lt;p&gt;Porém, quando usamos a conversão para o formato doc/docx, sempre nos deparamos com o problema da formatação. Isso porque não conseguimos, no markdown, informar qual a formatação aplicar para cada elemento, de forma padronizada. &lt;/p&gt;

&lt;p&gt;Mas até para isso a solução é simples: &lt;/p&gt;

&lt;p&gt;Primeiro, você gera o documento de referência da formatação, com:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pandoc --print-default-data-file  reference.docx &amp;gt; custom-reference.docx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Onde o &lt;code&gt;reference.docx&lt;/code&gt; não precisa existir localmente, ele é apenas a referência que o pandoc vai usar. &lt;/p&gt;

&lt;p&gt;Depois, você abre o arquivo de referência e altera as formatações como desejar. Neste ponto, é importante não alterar o conteúdo do arquivo, apenas a formatação dos itens. Pode mudar também o tamanho da página, da margem, e assim por diante.&lt;/p&gt;

&lt;p&gt;Terminado isso, só efetuar a conversão do arquivo como necessário, informando o arquivo de referência no momento de fazer a conversão. Voltando no exemplo anterior, do arquivo &lt;code&gt;restricoes.md&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pandoc restricoes.md -o restricoes.docx --reference-doc=custom-reference.docx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Essa ideia é interessante porque pode ser integrada, por exemplo, em um pipeline de geração de documentação sob demanda.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
