roGit banner

roGit

21 devlogs
34h 30m 28s

roGit is a "bare minimum" git implementation for ROBLOX.

It has some feature parity with git, and tries to match it as much as possible for end user sake. At the moment we use the smart HTTPS git protocol! So it should support any git repositor…

roGit is a “bare minimum” git implementation for ROBLOX.

It has some feature parity with git, and tries to match it as much as possible for end user sake. At the moment we use the smart HTTPS git protocol! So it should support any git repository server!
As ROBLOX doesnt have any built in “version control” apart from reverting updates, external solutions like Rojo exist which you can use normal git with. However this requires NO external tools at all! making it completely vanilla and in ROBLOX Studio!

This project uses AI

I used AI to both compare implementations and make them more compatible with git.

heavy AI usage with coding some stuff, however majority of the code is still written by myself.

Demo Repository

Loading README...

melon

Shipped this project!

Hours: 5.31
Cookies: 🍪 122
Multiplier: 22.96 cookies/hr

I finally added the GUI I was planning on making for desktop-mode users (e.g. Github desktop) whereas you dont need any git console skills! I feel this is a much more “simplified” git so I will most likely add some more git functions and whatnot at a later date. However I feel like i’m ready for another ship!
xD

melon

Okay! So we did a refactor on LOTS of comments.

  • We removed redundant ones (not needed)
  • I cleaned up function comments, added some detailing of what it does at the top of it!
    I also decided to edit the README to make it clear this is not trying to replace Rojo, as RoGit and Rojo are very different towards what they are designed to do!

Anyways thats it for now! Think im ready for another ship after the Desktop GUI update!

Attachment
0
melon

Devlog

New devlog!
The UI is now fully functional for beginner/end users to use without having to go through the weird terminal commands. I also finally fixed the auth not saving, because ROBLOX for some reason silently fails rather than erroring when saving keys with “.” or “/”? Probably because of JSON escape codes as well lol
Also did some more polishing on the UI, like misc fixes and whatnot, along with re-enabling branching in the meantime while it gets a fix.

Changelog

Attachment
Attachment
Attachment
Attachment
0
melon

Functional-esque “github-like” desktop plugin, instead of using the console people who dont understand terminal commands can instead use the user-friendly plugin UI. although currently unreleased the commit for it should be out soon for those who want to compile (into a package) along with a Release coming out when branches are actually fixed! since they are currently disabled. although i need to fix some quick placeholder text!

xD id say it looks pretty good for now though.

Attachment
Attachment
Attachment
1

Comments

leethana
leethana 10 days ago

Fireeee

melon

Created a mockup plugin UI for NON console users xD
Check out the images below btw

Attachment
Attachment
Attachment
Attachment
Attachment
0
melon

Shipped this project!

Hours: 6.37
Cookies: 🍪 142
Multiplier: 22.36 cookies/hr

We did some large updates mainly fixing some speed related things! Its going pretty well and I am also nearly at my goal of 4k! xD

melon

Devlog

hey guys!
sorry for not posting any devlogs for a while lmao.
Some large speed ups have been made when cloning stuff in! (100~ seconds down to 25~) so around a 4x speedup?
Lots of branch fixes have been made, along with fixes for weird behaviour with git add?
Also did a large cleanup of the codebase as everything was jam packed into a singular file lol

Commits

  • Code restructure/clean, commented each function. Fixed bug with git add implementation re-adding each object every singular commit. added warning to readme (756b454)
  • Update README.md with Issues (44cd34d)
  • Fix bugs with ‘add’ (8c83b77)
  • some auth fix (Still broken), fix bugs with instance properties (5e736cd)
  • index go brr, fixes (9997838)
  • Branch fixes, new checkout command, help info on switch/checkout (8229735)
Attachment
1

Comments

melon
melon 15 days ago

tried to upload a photo of the output, however for some strange reason devlogs kept getting a 422 error? (unprocessable content?)

Nullskulls

Tagged your project as well cooked!

🔥 Nullskulls marked your project as well cooked! As a prize for your nicely cooked project, look out for a bonus prize in the mail :)

melon

Devlog

Copied from the Release
There are some patches in this.

  • Serialization fixes with objects with instances as set properties (e.g. Part0 on a weld)
  • Bash console view cutting.
  • game/creator name being too long would overlap
  • fixed a bug with large games, you would get both a 20k+ output on a textlabel if too much instances & a script exhaustion timeout.
  • some performance fixes
  • commit log bugs
  • output did not match gits

thats currently all we have fixed xD
also added an example where you can clone in crossroads from my repository! (check out the README for more info)

Commits

  • exhaustion fixes, still quite laggy when cloning & commiting, garbage collector for bash, obj serializing fixes. (646408d)
  • Update README.md (7b4ad09)
Attachment
Attachment
0
melon

Devlog

Gemini found some bugs in the code & patched some out.
Implemented source control for scripts (source prop now saves)
Instances with properties that link to Instances are now saved as their rogit id, that gets resolved on clone.

Commits

  • serialization fixes, script sources save, 16 bugs fixed (e4b48f0)
Attachment
0
melon

Shipped this project!

Hours: 22.79
Cookies: 🍪 589
Multiplier: 25.82 cookies/hr

Learned some stuff relating to gits internals.
Also had fun making the small “bash” console, I havent added any cd/ls related commands yet. That will be fun for the next release though lmao
I already knew alot about luau, but I managed to learn a tiny bit about buffers (although I had AI mostly write the buffer-related entries)

Anyways it was fun to make/develop xD

Learnt how to be a prompt engineer (/s)

melon

Devlog

LOADS of fixes with some of the commands, also fixed the arg system to be actual commands & not args.
Attached a video, as you can see it is still very buggy in this current stage, however I find it good enough to be able to be shipped.
Hoping to get this actually stable soon, however its good enough to ship rn

love yall xx

WARNING: DO NOT USE IN PRODUCTION AT THIS CURRENT STAGE. (DATA LOSS IS GUARANTEED TO INCUR)

Commits

  • Better help! More commands, remotes/branches now work, bash terminal works as well (still no cd,ls etc) (516ef77)
  • new serialization, loads of bug fixes, README. (c84213c)
Attachment
0
melon

Devlog

Hey guys! Quick updates.

it wouldnt let me upload my devlog last night for some reason!

  • Branches have somewhat been implemented!
  • Bash terminal has been successful! although missing some basic commands like cd, ls (dir), rm etc
  • git restore has been added
  • git diff has been added
  • git mv has been added
  • git restore has been added
  • git merge has been added
  • git rebase has been added! (although non-functional yet)

AI has come through clutch these past few days, e.g. when I cant code at school it goes insane over rdc

hooping o get this shipped somewhat today lol

Commits

  • New subset of commands, command subcommands/tags, large smart https update, serialisation/deserialisation works, work in progress plugin! (b5247ae)
Attachment
0
melon

Working on IPad is painful af lmao

Implemented remote command (git remote) so you can add repository origin url to push to and whatnot, uses a auth key from your secrets (has to be base64 prefixed by “x:” within the base64)!
Maybe soon once I get a more ‘complete’ git clone then I can start completely start commiting/pushing from within roblox itself lmao
Will have to work on de-serialising repositories back to their original instances (e.g. BasePart, Script, LocalScript, etc) Also fixed parent support, if a instance is a parent it will turn into a folder with a file called “.property” within, this will hold the parents properties.

So right now in the current implementation we have:

  • git push
  • git pull
  • git add
  • git clone
  • git remote
    that’s ALOT so far lmao

So this will hopefully be a great implementation lmao!

Attachment
Attachment
0
melon

Info

Working git push!
not limited to github , so it supports all git server with the git protocol!
need to clean up the implementations and whatnot! but great progress.
Claude really came in clutch with its smart https git xD

Working on my ipad rn from school, however crazy progress so far!

Attachment
Attachment
0
melon

Cleaned up our test implementation, and now repositories actually clone!
Now we need a git push AND a way so that we can pull entire repositories and make them setup in the entirety of the game. e.g. ServerScriptService, Workspace etc!

Attachment
0
melon

Info

We have managed to get smart git (http) working! meaning that we can clone repositories in pure luau! This means that it wont be github specific! We will support all smart git services!
Its pretty insane this actually works.

Attachment
Attachment
0
melon

Working on improving the commit & add implementation to match git much more.

Attachment
0
melon

very cool repository cloning :P

Attachment
0
melon

Managed to implement a way to deserialize/reconstruct instances. though kinda broken.
Add now completely works & stores in index

ALOT of work for a simple thing xd

Attachment
Attachment
Attachment
0
melon

git add works, need to implement it doing whole dir/files but apart from that it works!
basically bts:

  • Git takes in the file
  • Git hashes the file using sha-1
  • Git then creates a folder using the 2 first characters of the hash in .git/objects
  • Git then removes the first 2 chars of the hash and creates a file with that, in the just created folder
  • Git then encrypts contents using zlib and stores inside the newly created file.

Will have to find out how storing directories works, should be easy enough tho!

Attachment
Attachment
0
melon

Managed to get a hash instance and property function working!
Successfully able to hash instances using sha-1

Attachment
Attachment
1

Comments

leethana
leethana about 1 month ago

Amazing!

melon

Implemented some example commands:
version, v
help, h

add, a
add is a work in progress since it doesnt work atm, however I have “example” structure for how it would work in the future.
need to implement actual bash esque file system.

Attachment
Attachment
0
melon

Argument Parsing!

Woooooooooooo so excited!
Arguments can now be created and parsed, along with a alias and callback to run.

Attachment
Attachment
0
melon

Implementing git into ROBLOX! Without the need for external tools, lets see how far we can take this. This will be my first project in which I completely avoid AI usage. WML!

Attachment
0