{"id":17342682,"url":"https://github.com/wkornewald/git-srepo","last_synced_at":"2025-10-10T08:09:14.566Z","repository":{"id":103562419,"uuid":"46993852","full_name":"wkornewald/git-srepo","owner":"wkornewald","description":"Import other repositories into your git repository. This is a simpler alternative to git-subrepo, git submodule, git-subtree, and git-stree.","archived":false,"fork":false,"pushed_at":"2018-01-09T13:59:26.000Z","size":23,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-14T19:52:52.817Z","etag":null,"topics":["git","git-extension","git-extenstions","git-stree","git-submodule","git-submodules","git-subrepo","git-subtree","submodules"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wkornewald.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2015-11-27T18:14:52.000Z","updated_at":"2024-01-13T23:54:37.000Z","dependencies_parsed_at":null,"dependency_job_id":"eff93239-8e6e-4518-8727-8bb3f87f3462","html_url":"https://github.com/wkornewald/git-srepo","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/wkornewald/git-srepo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wkornewald%2Fgit-srepo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wkornewald%2Fgit-srepo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wkornewald%2Fgit-srepo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wkornewald%2Fgit-srepo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wkornewald","download_url":"https://codeload.github.com/wkornewald/git-srepo/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wkornewald%2Fgit-srepo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279003294,"owners_count":26083555,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-10T02:00:06.843Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["git","git-extension","git-extenstions","git-stree","git-submodule","git-submodules","git-subrepo","git-subtree","submodules"],"created_at":"2024-10-15T16:06:39.244Z","updated_at":"2025-10-10T08:09:14.561Z","avatar_url":"https://github.com/wkornewald.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://travis-ci.org/allbuttonspressed/git-srepo.svg?branch=master)](https://travis-ci.org/allbuttonspressed/git-srepo)\n\n# git-srepo\nIntegrate other repositories into your git repository.\nThis is a simpler alternative to git subtree, submodule, stree, and subrepo.\n\nWhat problem git-srepo solves:\n\n\nCommits to an imported subrepo are kept within your project repo until you push\nthem to the subrepo.\nLocal changes are maintained as a clean, rebased set of patches for upstream\ncontribution.\n\n## Installation\nJust add the git-srepo script to your PATH.\n\nSupported platforms: Linux, OS X, and Windows.\n\n## Examples\nImport d3 repository into lib/d3 folder:\n\n```sh\ngit srepo import lib/d3 https://github.com/mbostock/d3\n```\n\nExport a folder into a new repo (also converts that folder to a subrepo):\n\n```sh\ngit srepo export src/mylib https://github.com/myaccount/mylib master\n```\n\nBuild imported subrepo into .git/.subrepo/lib/d3 (so you can pull/push, for example):\n\n```sh\ngit srepo build lib/d3\n```\n\nLoad your subrepo state from .git/.subrepo/lib/d3 into the project (e.g. after you pull):\n\n```sh\ngit srepo load lib/d3\n```\n\nList imported repositories:\n\n```sh\ngit srepo list\n```\n\n## More details\nThis extension maintains a linear, rebased set of your local changes, so there\nwon't be any merge commits, etc.\nThis is important because most projects won't accept your patches unless\nthey're clean.\n\nAll state (including the rebased set of patches!) is committed to your\nrepository. This means anyone can pull new changes and contribute your team's\nchanges back upstream.\n\nAlso, this extension does all its magic in a separate clone (in .git/.subrepo).\nThis is important because you'll most likely have existing software (an IDE,\na build script, etc.) monitoring your repository for changes. It would be\nreally annoying if your IDE closed all your files during a pull.\n\n## Why?\nNone of the other solutions allows maintaining your changes in a way that\nallows easy upstream contribution through a linear, rebased set of patches.\nThis is the main problem I want to solve.\n\nAdditionally, the other solutions have these issues:\n\nWith git subtree your history gets polluted. See here for more details:\nhttps://medium.com/@porteneuve/mastering-git-subtrees-943d29a798ec\n\nWith git submodule you have to be aware of imported repos and run extra\ncommands and create forks for your project-specific commits. This makes\nusing your project unnecessarily complicated. See here for more reasons:\nhttp://blogs.atlassian.com/2013/05/alternatives-to-git-submodule-git-subtree/\n\nWith git stree, the subtree's settings are kept local to your repo, so you're\nthe only one who can pull new changes and you better do some backups in case\nyour disk dies.\n\nWith git subrepo, pulls can lose your local changes. This bug might also exist\nin git stree. Also, with git subrepo, the subrepo gets checked out within your\nproject repository on every subrepo pull. This breaks your IDE and any build\nscripts watching your repo, as described above.\n\n## Known issues\nBuilding the subrepo history can take a long time when there are lots of commits\nin that subrepo folder, especially on Windows. Currently we always rebuild the\nwhole history instead of reusing the existing repo once it's built.\n\n## Contributing\nContributions are always welcome. Just create a fork of this repo and send a\npull request. Thank you. :)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwkornewald%2Fgit-srepo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwkornewald%2Fgit-srepo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwkornewald%2Fgit-srepo/lists"}