{"id":27010750,"url":"https://github.com/jkaraskiewicz/versions","last_synced_at":"2025-04-04T11:27:17.308Z","repository":{"id":285643011,"uuid":"953382542","full_name":"jkaraskiewicz/versions","owner":"jkaraskiewicz","description":"Simple module based version control system","archived":false,"fork":false,"pushed_at":"2025-04-01T22:12:45.000Z","size":1101,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-01T22:37:15.743Z","etag":null,"topics":["git","vcs","version-control","version-control-system","version-manager"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jkaraskiewicz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2025-03-23T08:25:07.000Z","updated_at":"2025-04-01T22:12:48.000Z","dependencies_parsed_at":"2025-04-01T22:37:20.773Z","dependency_job_id":"68147cb8-f814-4c74-a11f-89f16f43be7d","html_url":"https://github.com/jkaraskiewicz/versions","commit_stats":null,"previous_names":["jkaraskiewicz/versions"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkaraskiewicz%2Fversions","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkaraskiewicz%2Fversions/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkaraskiewicz%2Fversions/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkaraskiewicz%2Fversions/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jkaraskiewicz","download_url":"https://codeload.github.com/jkaraskiewicz/versions/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247168506,"owners_count":20895129,"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","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","vcs","version-control","version-control-system","version-manager"],"created_at":"2025-04-04T11:27:16.746Z","updated_at":"2025-04-04T11:27:17.299Z","avatar_url":"https://github.com/jkaraskiewicz.png","language":"Rust","readme":"\u003ch1\u003eversions\u003c/h1\u003e\n\u003ch2\u003eSimple module based version control system\u003c/h2\u003e\n\n## Introduction to _versions_\n\n_versions_ is a simple VCS focused on maintaining multiple versions of files.\nAs such, it does not operate on commits as such, and does not keep track of changes within a single version.\n\n_versions_ defines two notions - modules and versions. A module is bound to a single directory within the repository.\nWithin a module, multiple versions can be defined, so that the content of the directory is reflected based on a version selection.\n\nTo start working with _versions_ you need to initialize the repository first:\n\n    $ versions init\n    \u003e Repository initialized successfully.\n\nNow let's add some modules.\n\n    $ mkdir sample_dir\n    $ mkdir another_dir\n    $ versions module add sample_dir\n    \u003e Module sample_dir added.\n\nIf you want your module to be named differently than the directory, you can use that command with 2 parameters.\n\n    $ versions module add sample sample_dir\n    \u003e Module sample added.\n\nNow as we added a module, let's select it. In that way, we can operate on that module's versions without specifying it every time.\n\n    $ versions module select sample\n    \u003e Module sample selected.\n\nWhen you add a new module, the default version of that module is created for you.\nYou can list versions of your module using:\n\n    $ versions version list\n    \u003e default\n\nNow let's add some files to our sample_dir directory.\n\n    $ echo \"First file!\" \u003e sample_dir/my_new_file.txt\n\nLet's run the status command to see the changes in the workspace.\n\n    $ versions version status\n    \u003e + sample_dir/my_new_file.txt\n      --- original\n      +++ modified\n      @@ -0,0 +1 @@\n      +First file!\n\nGreat, since there is no commits in _versions_, there is no need to save our work for now.\n\nLet's create another version.\n\n    $ versions version add new_version\n    \u003e Version new_version added.\n\nAnd let's switch to that version:\n\n    $ versions version select new_version\n    \u003e Version new_version selected.\n\nSince we are selecting a different version now, the changes in the working copy were 'ammended' to the previous version state.\nAnd our __new_version__ branches out from that state.\n\nNow we can make changes to our new version.\n\n    $ echo \"Some text\" \u003e\u003e sample_dir/my_new_file.txt\n\nLet's check the status:\n\n    $ versions version status\n    \u003e sample_dir/my_new_file.txt \n      --- original\n      +++ modified\n      @@ -0,0 +1 @@\n      First file!\n      +Some text\n\nGreat! Now let's switch back to the previous version.\n\n    $ versions version select default.\n    \u003e Version default selected.\n\nAs before, our last changes before switching the version were 'ammended' to the previous one.\nNow as we moved to the default version, our workspace is clean and the file has its previous content:\n\n    $ cat sample_dir/my_new_file.txt\n    \u003e First file!\n\nAll our work was in a single module which corresponds to a directory.\nModules are independent and have separate set of versions.\n\nIn the first step, we created another directory. Let's bind it to a module.\n\n    $ versions module add another another_dir\n    \u003e Module another added.\n\n    $ versions module select another\n    \u003e Module another selected.\n\nNow we start with a default version as we did before.\n\nFor more information about available commands, use the --help flag.\n\n    $ versions --help\n    \u003e Simple version control system\n    \u003e\n    \u003e Usage: versions \u003cCOMMAND\u003e\n    \u003e\n    \u003e Commands:\n    \u003e init         Initialize repository\n    \u003e module       Module commands\n    \u003e version      Version commands\n    \u003e list         Show modules and versions\n    \u003e completions  Generate shell completions\n    \u003e help         Print this message or the help of the given subcommand(s)\n\n    \u003e Options:\n    \u003e -h, --help     Print help\n    \u003e -V, --version  Print version\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjkaraskiewicz%2Fversions","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjkaraskiewicz%2Fversions","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjkaraskiewicz%2Fversions/lists"}