RepoToRoblox - Simple and quick GitHub cloning into your Explorer

I often find myself wanting to get the files of some open source repository quickly and easily. I don’t want to have to open my browser to get the files, and I don’t want to have to setup some overkill solution.
So, I created this intuitive and simple plugin that uses the GitHub REST V3 APIs to clone the Repo in for me.

RepoToRoblox

RepoToRoblox

Get it here!


This plugin is designed to be as quick and easy as possible. Unlike a lot of my plugins, this isn’t a power user tool- it’s just a lazy person tool. This was a personal plugin for my own lazy self until I realized others might benefit from it as well.

You just put the repo name and owner’s name (and optionally a branch name), and it creates the repo structure in workspace.

image

For files that are not .lua, it formats the source into a comment as not to fill your Script Analysis window with annoying syntax errors and warnings.


You should give the plugin an app auth token, generated here.

image

The reasons it asks for an auth token is so that you can use it to clone your private repos, and so that you aren’t rate limited.
GitHub rate limits tokenless requests to 60 per hour (which will get hit instantly if you try to clone a repo with a fair amount of files.) If you give your token, the rate limit goes up to 5000 per hour, so you’ll likely never even get close to hitting it.


There are some QoL settings as well:

image

“Only clone .lua files” means it’ll only clone the folders and the .lua files, avoiding a lot of unwanted file transfer
“Trim .filetype” removes the .lua or .txt from script names
“Process init.lua” turns init.lua files into parent scripts
“Process .server & .client” turns those files into Scripts and LocalScripts for you
“Parent to selection” places the repo files inside your currently selected object (disabled will place in workspace)


Get it here!

68 Likes

And yeah, BoatBomber again created some usefull plugin that no one thought to create before him. If I should start getting 1$ for each good idea that boatbombers have, even the ideas that he dosen‘t already created, I am sure I would be millionaire lol. Ok, now stop with the funny side, it‘s again really good (damn, the master created again something for us for a really cheap price).

7 Likes

Does this handle init.lua files appropriately? (turn their parents into ModuleScripts and set its source as init.lua’s source)

3 Likes

That’s so cool!!! Keep up the good work! men I wish I can make like that! :star:

But yeah, Thank you for reading this, I hope you love or like this comment, have a nice day! :white_heart: :happy3:

1 Like

Update!

  • Option to process init files into the intended ModuleScript format
    (Requested by: @buildthomas)

  • Option to process .client.lua and .server.lua into LocalScripts and Scripts, respectively
    (Requested by: @Elttob)

  • Option to trim the .filetype off the end of file names
    (Requested by: @Elttob)

7 Likes

Update!

  • Option to only clone .lua files and directories. Helpful in avoiding the clutter of irrelevant files.

  • The “Cloning…” now displays the file it’s currently handling, so you know it didn’t just fail/freeze.

  • More intelligent error handling. Instead of displaying an error and cancelling everything, it simply marks that file as [FAILED] and puts the error message in the .Source.

7 Likes

Update!

  • Switched from HttpService:GetAsync to HttpService:RequestAsync
  • Restructured to use coroutine for asynchronous file downloads instead of sequential

This update makes the plugin MUCH faster.

6 Likes

Bugfix!

Oops. That last update introduced a bug where it could wait indefinitely if you had a particular combination of settings while cloning a repo with non-lua file types. That’s on me for not being more thorough with my testing. :grimacing:
I’ve fixed that bug, and added a timeout so that type of bug can’t happen again regardless.

2 Likes

Do you have a GH repo for this plugin?

Oh my, boatbomber was, is and will always remain epic. Thanks for this! This will help me so much as my github repositories are full of code sooo this is perfect for me!

I have a question.

Will it allow us to get code in other languages from the repositories? (Wait nevermind i got the answer from the above posts)

1 Like

Thanks for this! Just bought it a few hours ago and it’s working great. However I and many others don’t often put modules in the workspace by default, but into a container like ReplicatedStorage since I’m mostly using modules that can be shared by the server and client, but maybe in some other cases I may want to import in a client-only/server-only module. Would it be reasonable to suggest the plugin to import the repo to your current selection? So if I have say a Shared folder in ReplicatedStorage selected, the contents would get put into that instead of just workspace. The plugin would default to workspace if there is no selection.

3 Likes

I’ll add that setting as an option! Thanks for requesting.

1 Like

Update!

  • Option to parent the repo folder to your current selection instead of just workspace
    (Requested by: @sjr04)
3 Likes

Update!

  • Added support for cloning specific branch of a repository!
    (Requested & assisted by @pobammer)

image

4 Likes

Is there any updates on this? it’s been like 2 years and nothing is announced


I would spend 3.67 AED on this plugin (I said AED cuz my local currency is AED, and 1 USD is equal to 3.67 AED, not too much expensive), and I like the concept (so I don’t have to manually go to github and copy every .lua files I have)

also sorry if I bumped the post, Just wanted to ask if there are updates

1 Like

This is a finished product.
It’s received several updates over the years based on user requests and it’s reached a state where it fills the needs of its users and there aren’t more requests.

1 Like

There really isn’t room for updates when it simply does what git clone does in VSCode.

1 Like

I have an suggestion

Add a setting where if it finds an empty folder, then it will delete the folder, By default it will be on