12

CodeCrafters - Advanced programming challenges

 4 years ago
source link: https://codecrafters.io/challenges/git
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Build your own Git

Early Access

In this challenge, you’ll build a Git implementation that can initialize a repository, create commits and clone a public repository from GitHub. Along the way, you’ll learn about the .git directory, a few of Git’s “plumbing” commands, Git objects (blobs, commits, trees etc.), Git’s transfer protocols and more.

This challenge has 7 stages.

#1

Initialize the .git directory

In this stage, you’ll implement the git init command. You’ll initialize a git repository by creating a .git directory and some files inside it.

#2

Read a blob object

In this stage, you’ll read a blob from your git repository by fetching its contents from the .git/objects directory.

You’ll do this using the first of multiple “plumbing” commands we’ll encounter in this challenge: git cat-file.

#3

Create a blob object

In the previous stage, we learnt how to read a blob. In this stage, we’ll persist a blob by implementing the git hash-object command.

#4

Read a tree object

Now that we’ve learnt how to read/write blobs, let’s move onto our next Git object: the tree. In this stage, you’ll read a tree object from storage by implementing the git ls-tree command.

#5

Write a tree object

In this stage, you’ll write a tree to git storage by implementing the git write-tree command.

To keep things simple, we won’t implement an index, we’ll just assume that all changes in the worktree are staged.

#6

Create a commit

Let’s move on to the last git object we’ll be dealing with in this challenge: the commit. In this stage, you’ll create a commit by implementing the git commit-tree command.

#7

Clone a repository

This is the last stage of the challenge, and probably the hardest! In this stage, you’ll clone a public repository from GitHub. To do this, you’ll use one of Git’s Transfer protocols.

Interested in trying out the Build your own Git Challenge? Checkout our early access program!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK