Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gitfull

A source-first package manager that installs software straight from GitHub (and other configurable forges): clone → resolve deps → build → install, with clean, dependency-aware removal.

License note: gitfull is currently under a temporary, restrictive, all-rights-reserved license while it's young and unreviewed for security — see LICENSE. It is not yet open source. In short: you can download it, review it, and run it yourself for personal, non-commercial use; you can't redistribute it or use it commercially without permission.

Install

The easiest way, on any Linux distro (or macOS via Homebrew, or FreeBSD):

./install.sh

This detects your package manager (apt, dnf, yum, pacman, zypper, apk, xbps, emerge, brew, or FreeBSD's pkg), checks whether you already have a C compiler, make, git, and curl, and — only if something's missing, and only after asking you — installs just those specific tools using your distro's native package manager. It then builds gitfull and installs it to /usr/local/bin.

./install.sh --yes        # don't prompt before installing missing build tools
./install.sh --no-deps    # skip the dependency check/install step entirely
PREFIX=$HOME/.local ./install.sh   # install somewhere else, no root needed

Or build it by hand:

make
sudo make install     # installs to /usr/local/bin

gitfull itself has exactly one build/runtime requirement beyond a C compiler and libc: the git and curl binaries on your PATH. It does not link against libcurl, libgit2, or any JSON library — it shells out to the git/curl CLIs and has a small built-in JSON reader/writer. There is nothing distro-specific (like -devel headers) required to build it.

Usage

gitfull install <package>                  # best-match repo, latest release tag
gitfull install --edge <package>           # clone HEAD of the default branch
gitfull install --binary <package>         # fetch a prebuilt GitHub Release asset
gitfull install user@repo --edge <package> # install a specific fork, at HEAD
gitfull install forge:user@repo <package>  # install from a specific configured forge

gitfull remove <package>                   # remove installed files only
gitfull remove -D <package>                # also remove build scripts + orphaned deps

gitfull list                               # list installed packages
gitfull search <query>                     # show ranked candidate repos

How package resolution works

gitfull install foo (no user@) queries the GitHub Search API for repositories matching foo, then ranks candidates by a composite score:

score = stars_normalized * 0.6 + recent_commit_activity * 0.4

"Recent commit activity" = commits in the last 90 days (via the GitHub /commits API), so an abandoned repo with a huge star count loses out to a smaller but actively maintained one, per the "most starred and developing" requirement. Exact owner/repo name matches are boosted.

user@name skips ranking and resolves directly to github.com/user/name.

How removal safety works

Every install writes a manifest to ~/.gitfull/installed/<pkg>.json recording:

  • every file gitfull put on disk (from make install / binary placement)
  • the source checkout path
  • build scripts/artifacts (build dir, generated Makefiles, etc.)
  • which dependencies were installed on this package's behalf, and whether each dependency was already present before this install (so we never touch something the user installed independently)

gitfull remove pkg deletes only the files in that manifest's files list.

gitfull remove -D pkg additionally deletes the source/build tree and walks the dependency list; a dependency is only uninstalled if no other installed package still depends on it (checked against every other manifest's depends_on list).

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages