<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="136712" data-post-id="136712">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="bryanhuntesl" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/bryanhuntesl/120/8270_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  bryanhuntesl
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Tristans reply notwithstanding - a SSH GIT proxy would be useful in a variety of environments.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="136712" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/gitgud-github-clone-entirely-written-in-elixir/12920/32">Post #31</a>
	                </div>
	            </div>
              <div id="likers-container-136712" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="136712"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #31"></div>
  </section>
</div>
    <div class="postbit" id="136713" data-post-id="136713">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="tristan" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/tristan/120/12307_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  tristan
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Rebar3 Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Na, I’ve only used the secrets stuff on linux.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="136713" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/gitgud-github-clone-entirely-written-in-elixir/12920/33">Post #32</a>
	                </div>
	            </div>
              <div id="likers-container-136713" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="136713"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #32"></div>
  </section>
</div>
    <div class="postbit" id="136870" data-post-id="136870">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="MarioFlach" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/MarioFlach/120/24564_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  MarioFlach
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>You can use or extract different parts of the project to write a SSH Git proxy. The umbrella project has three separate apps:</p>
<p>The <code>:gitrekt</code> app provides:</p>
<ul>
<li>Git plumbing &amp; porcelain commands (libgit2 wrapper using NIFs)</li>
<li>Git <a href="https://git-scm.com/book/en/v2/Git-Internals-Transfer-Protocols" rel="noopener nofollow ugc">wire-protocol</a> implementation</li>
<li>Git <a href="https://git-scm.com/docs/pack-format" rel="noopener nofollow ugc">PACK format</a> implementation</li>
</ul>
<p>The <code>:gitgud</code> app provides the core functionalities and building blocks such as <code>User</code>, <code>Repo</code> and many other schemas. It also implement the <code>SSHServer</code> and <code>SmartHTTPBackend</code> both required to support Git over SSH/HTTP.</p>
<p>The <code>:gitgud_web</code> app provides the Phoenix application and a fully-featured GraphQL API.</p>
<p>I’m also very interested in a CI/CD solution for my project but need to finish/polish things first. There is <a href="https://github.com/AlloyCI/alloy_ci" class="inline-onebox" rel="noopener nofollow ugc">GitHub - AlloyCI/alloy_ci: Continuous Integration, Deployment, and Delivery coordinator, written in Elixir. · GitHub</a> which looks promising (based on GitLab CI runner).</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="136870" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/gitgud-github-clone-entirely-written-in-elixir/12920/34">Post #33</a>
	                </div>
	            </div>
              <div id="likers-container-136870" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="136870"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #33"></div>
  </section>
</div>
    <div class="postbit" id="136877" data-post-id="136877">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="MarioFlach" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/MarioFlach/120/24564_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  MarioFlach
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thank you, I really enjoy working on this project! For me the interesting thing is that there is a lot of scaling possibilities.</p>
<p>I’m currently working with <em>medium</em> size repositories (<a href="https://github.com/elixir-lang/elixir" rel="noopener nofollow ugc">elixir-lang</a> &gt; 15.000 commits, <a href="https://github.com/phoenixframework/phoenix" rel="noopener nofollow ugc">phoenix</a> &gt; 6.000 commits) and I’m quite happy with the performances so far. But it’s a completely different story to work on <em>big</em> repositories such as <a href="https://github.com/torvalds/linux" rel="noopener nofollow ugc">linux-kernel</a> &gt; 850.000 commits).</p>
<p>There are a few Git things that perform very slow. For example, getting the total number of ancestors from a given commit can take up to one second on large repositories. Even worse, getting the history for a specific blob or tree can take up to 20 seconds.</p>
<p>I’ve began to cache meta-informations each time a Git repository is pushed in order to optimise performances but there is still much to do…</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="136877" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/gitgud-github-clone-entirely-written-in-elixir/12920/35">Post #34</a>
	                </div>
	            </div>
              <div id="likers-container-136877" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="136877"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #34"></div>
  </section>
</div>
    <div class="postbit" id="136884" data-post-id="136884">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="wolfiton" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/wolfiton/120/15884_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  wolfiton
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><a class="mention" href="/u/marioflach" rel="nofollow">@MarioFlach</a> You are an ambitious person and with patience, I think you will do great things.</p>
<p>I am a beginner in elixir i only have one week in elixir but if I can help with your project in any way let me know.<br>
As experience i only created some absinthe toy apps.</p>
<p>I want to learn more about elixir and phoenix and decided to make it my go to stack when it comes to web dev.</p>
<p>Currently learning vue and nuxt so if i can help with the frontend would be cool.</p>
<p>I also come with a node background and have some skills with graphql.</p>
<p>In any case good luck with the project.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="136884" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/gitgud-github-clone-entirely-written-in-elixir/12920/36">Post #35</a>
	                </div>
	            </div>
              <div id="likers-container-136884" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="136884"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #35"></div>
  </section>
</div>
    <div class="postbit" id="140624" data-post-id="140624">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="MarioFlach" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/MarioFlach/120/24564_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  MarioFlach
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I’ve been working a lot on this project lately. Just released version <a href="https://github.com/almightycouch/gitgud/releases/tag/v0.2.7" rel="noopener nofollow ugc">0.2.7</a>.</p>
<p>Also I decided to publish the project on a dedicated server for testing purposes.</p>
<p>So here it is: <a href="https://git.limo" rel="noopener nofollow ugc">https://git.limo</a></p>
<p>Or here if you want to browse some repositories:</p>
<aside class="onebox allowlistedgeneric" data-onebox-src="https://expireddomains.com/domain/git.limo?utm_source=redi">
  <header class="source">
      <img src="https://expireddomains.com/images/favicon.webp" class="site-icon" alt="" width="205" height="205">

      <a href="https://expireddomains.com/domain/git.limo?utm_source=redi" target="_blank" rel="noopener nofollow ugc">ExpiredDomains.com</a>
  </header>

  <article class="onebox-body">
    <div class="aspect-image" style="--aspect-ratio:690/362;"><img src="https://expireddomains.com/logos/ed.jpg" class="thumbnail" alt="" width="690" height="362"></div>

<h3><a href="https://expireddomains.com/domain/git.limo?utm_source=redi" target="_blank" rel="noopener nofollow ugc">git.limo is for sale! Check it out on ExpiredDomains.com</a></h3>

  <p>Buy git.limo for 100 on GoDaddy via ExpiredDomains.com. This premium expired .limo domain is ideal for establishing a strong online identity.</p>


  </article>

  <div class="onebox-metadata">
    
    
  </div>

  <div style="clear: both"></div>
</aside>

<p><em>This is pretty limited currently because you are not allowed to create new repositories. I need to provide monitoring tools and other things before letting anybody host their repositories.</em></p>
<p>Here’s a brief summary of the project’s current state:</p>
<h2><a name="p-140624-basic-crud-operations-1" class="anchor" href="#p-140624-basic-crud-operations-1" aria-label="Heading link" rel="nofollow"></a>Basic CRUD operations</h2>
<ul>
<li>User registration/authentication
<ul>
<li>with login/email - password credentials.</li>
<li>with OAuth2.0 for GitHub and Gitlam.</li>
</ul>
</li>
<li>Email management:
<ul>
<li>Each registered user need at least one verified email address in order to create new repositories and maintain other’s repositories.</li>
<li>Each verified email address is used to associate Git commits. This is also the case for GPG signed commits.</li>
<li>The primary email address is also used to retrieve a user’s Gravatar.</li>
</ul>
</li>
<li>SSH and GPG key management:
<ul>
<li>We support Git over SSH and HTTPS. By adding SSH public keys, a user can authenticate without the need of a password.</li>
<li>GPG public keys are used to verify that a Git commit has been signed by a given user. In order to show the <em>verification</em> icon:
<ol>
<li>The committer’s email must match a verified email address</li>
<li>The committer’s email must also match the GPG key email address</li>
</ol>
</li>
</ul>
</li>
<li>Repository management:
<ul>
<li>Users can create repositories if they have at least one verified email address.</li>
<li>Each repository can have multiple maintainers with read/write/admin rights.</li>
</ul>
</li>
</ul>
<h2><a name="p-140624-git-repositories-2" class="anchor" href="#p-140624-git-repositories-2" aria-label="Heading link" rel="nofollow"></a>Git Repositories</h2>
<p>We support both HTTPS and SSH transport protocols. While HTTPS support <em>Basic Authentication</em> via credentials. SSH supports authentication via public key and password.</p>
<p>Access to repositories depend on the user’s authorisations:</p>
<ul>
<li>Anybody can view/clone a public repo.</li>
<li>Only owner and maintainers can view/clone a private repo.</li>
<li>Only owner and maintainers with at least <code>:write</code> access can write/push to a repo.</li>
<li>Only owner and maintainers with <code>:admin</code> access can edit settings of a repo.</li>
</ul>
<p>Browsing repositories is similar to GitHub/GitLab. You can browse trees, view blobs (with syntax-highlighting), walk the commit history, walk the commit history for a given tree/blob, display diffs, etc.</p>
<hr>
<p>Accessing a Git repository content is done via the <code>GitRekt.GitAgent</code> abstraction. Basically the agent provides an API to manipulate Git objects and refs.</p>
<p>The nice part here is that the access to a repository can be done from multiple processes simultaneously (by wrapping the NIFs resources in a <code>GenServer</code> and serialising function calls).</p>
<p>This will be important when implementing support for clustering aka. distributing repositories on multiple nodes.</p>
<p>The <code>GitRekt.GitAgent</code> provides two different modes:</p>
<ul>
<li><code>:inproc</code> - calling <code>GitRekt.Git</code> functions (NIFs) directly.</li>
<li><code>:shared</code> - serialise function calls through <code>GenServer</code>.</li>
</ul>
<p>The <code>GitRekt.GitRepo</code> protocol helps to implement custom logic (clustering) for both modes. Currently, only <code>GitGud.Repo</code> implements this protocol.</p>
<h2><a name="p-140624-graphql-api-3" class="anchor" href="#p-140624-graphql-api-3" aria-label="Heading link" rel="nofollow"></a>GraphQL API</h2>
<p>The available <a href="https://git.limo/graphql" rel="noopener nofollow ugc">GraphQL API</a> is quite fully featured. It also provide subscriptions via Phoenix Websockets.</p>
<h2><a name="p-140624-issues-and-reviews-4" class="anchor" href="#p-140624-issues-and-reviews-4" aria-label="Heading link" rel="nofollow"></a>Issues and reviews</h2>
<p>There is no issue system at the moment. I hope to get started with issues soon.</p>
<p>I also want to provide a review mechanism, basically the possibility to review changes across commits. Currently, any registered user can comment on any commit. Comments are stored globally (shown at the end of a diff) or on a per-line basis.</p>
<h2><a name="p-140624-wiki-5" class="anchor" href="#p-140624-wiki-5" aria-label="Heading link" rel="nofollow"></a>Wiki</h2>
<p>I’ve played a little bit with a Git based Wiki implementation. But this will come in a later future.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="140624" data-batch-url="/posts/batch_likers">
                        14
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/gitgud-github-clone-entirely-written-in-elixir/12920/37">Post #36</a>
	                </div>
	            </div>
              <div id="likers-container-140624" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="140624"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-most-liked cat-most-liked" title="One of the top 3 liked posts in this thread!"></div>
  </section>
</div>
    <div class="postbit" id="140639" data-post-id="140639">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="LTheGreats" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/LTheGreats/120/5884_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  LTheGreats
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>The project looks really cool. The front page even has my favorite language, lorem ipsum! Seriously though, this is an awesome use for elixir and looking through this project’s source code is interesting and fun.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="140639" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/gitgud-github-clone-entirely-written-in-elixir/12920/38">Post #37</a>
	                </div>
	            </div>
              <div id="likers-container-140639" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="140639"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #37"></div>
  </section>
</div>
    <div class="postbit" id="140647" data-post-id="140647">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="MarioFlach" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/MarioFlach/120/24564_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  MarioFlach
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thank you. Haha, yes you have to fill that front-page with something <img src="https://forum.elixirforum.com/images/emoji/apple/grin.png?v=15" title=":grin:" class="emoji" alt=":grin:" loading="lazy" width="20" height="20"></p>
<p>The overhaul design of the site is very “minimal”, I’m using <a href="https://bulma.io" rel="noopener nofollow ugc">Bulma</a> but did not bother to customise things yet.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="140647" data-batch-url="/posts/batch_likers">
                        4
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/gitgud-github-clone-entirely-written-in-elixir/12920/39">Post #38</a>
	                </div>
	            </div>
              <div id="likers-container-140647" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="140647"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #38"></div>
  </section>
</div>
    <div class="postbit" id="140810" data-post-id="140810">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="scouten" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/scouten/120/2055_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  scouten
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>FYI it’s not ready for you to use <em>yet</em>, but I’d love to hear your thoughts on what it would take for <a href="https://xgit.io" rel="noopener nofollow ugc">xgit</a> to serve your core git needs in the long term.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="140810" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/gitgud-github-clone-entirely-written-in-elixir/12920/40">Post #39</a>
	                </div>
	            </div>
              <div id="likers-container-140810" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="140810"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #39"></div>
  </section>
</div>
    <div class="postbit" id="140825" data-post-id="140825">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="MarioFlach" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/MarioFlach/120/24564_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  MarioFlach
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Wow I didn’t know about Xgit. Looks very promising <img src="https://forum.elixirforum.com/images/emoji/apple/+1.png?v=15" title=":+1:" class="emoji" alt=":+1:" loading="lazy" width="20" height="20"><br>
I really like the repository storage abstraction. Is <code>Xgit.Repository.OnDisk</code> fully compatible with the Git filesystem storage format?</p>
<p>My approach is very different one, I wrote NIFs to wrap a good part of <a href="https://libgit2.org" rel="noopener nofollow ugc">libgit2</a>. I also wrote an experimental storage backend to work with <a href="https://www.postgresql.org/docs/11/libpq.html" rel="noopener nofollow ugc">libpq</a>.</p>
<p>Ditching libgit2 all together for an Elixir based Git implementation would be <img src="https://forum.elixirforum.com/images/emoji/apple/raised_hands.png?v=15" title=":raised_hands:" class="emoji" alt=":raised_hands:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="140825" data-batch-url="/posts/batch_likers">
                        4
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/gitgud-github-clone-entirely-written-in-elixir/12920/41">Post #40</a>
	                </div>
	            </div>
              <div id="likers-container-140825" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="140825"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #40"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/12920/load_more?page=5">Load more posts (23 remaining)</a>
</div></template></turbo-stream>