All Projects → weakish → Gister

weakish / Gister

Licence: apache-2.0
command line tool to sync github gists

Programming Languages

shell
77523 projects

Projects that are alternatives of or similar to Gister

Vscode Gist
vscode extension for quick gists
Stars: ✭ 146 (-9.88%)
Mutual labels:  gist
Gist
Gist command line interface
Stars: ✭ 152 (-6.17%)
Mutual labels:  gist
Vim Gista
An alternative gist.vim, vim plugin which manipulate gists in Vim.
Stars: ✭ 155 (-4.32%)
Mutual labels:  gist
Json 2 Kotlin
Convert JSON to Kotlin Data Classes
Stars: ✭ 148 (-8.64%)
Mutual labels:  command-line-tool
Git Plus
Git utilities
Stars: ✭ 150 (-7.41%)
Mutual labels:  command-line-tool
Git Remote S3
Push and pull git repos to/from an s3 bucket, encrypted using gpg.
Stars: ✭ 154 (-4.94%)
Mutual labels:  command-line-tool
Georaptor
Python Geohash Compression Tool
Stars: ✭ 143 (-11.73%)
Mutual labels:  command-line-tool
Graphtage
A semantic diff utility and library for tree-like files such as JSON, JSON5, XML, HTML, YAML, and CSV.
Stars: ✭ 2,062 (+1172.84%)
Mutual labels:  command-line-tool
Dejavu
Quickly detect already witnessed data.
Stars: ✭ 151 (-6.79%)
Mutual labels:  command-line-tool
Browse At Remote
Browse target page on github/bitbucket from emacs buffers
Stars: ✭ 155 (-4.32%)
Mutual labels:  gist
Hiboot
hiboot is a high performance web and cli application framework with dependency injection support
Stars: ✭ 150 (-7.41%)
Mutual labels:  command-line-tool
Caesium Clt
Caesium Command Line Tools - Lossy/lossless image compression tool using mozjpeg and zopflipng
Stars: ✭ 149 (-8.02%)
Mutual labels:  command-line-tool
Promptless
🚀 A super fast and extremely minimal shell prompt.
Stars: ✭ 155 (-4.32%)
Mutual labels:  sh
Xioc
Extract indicators of compromise from text, including "escaped" ones.
Stars: ✭ 148 (-8.64%)
Mutual labels:  command-line-tool
Enhancd
🚀 A next-generation cd command with your interactive filter
Stars: ✭ 2,049 (+1164.81%)
Mutual labels:  command-line-tool
Onhold
🔊 Play sounds while and after shell jobs complete
Stars: ✭ 146 (-9.88%)
Mutual labels:  command-line-tool
Shell Tricks
Simple bash tricks which make your life easier.
Stars: ✭ 153 (-5.56%)
Mutual labels:  sh
Marathon
[DEPRECATED] Marathon makes it easy to write, run and manage your Swift scripts 🏃
Stars: ✭ 1,889 (+1066.05%)
Mutual labels:  command-line-tool
Dategrep
print lines matching a time range
Stars: ✭ 159 (-1.85%)
Mutual labels:  command-line-tool
Investigator
Interactive and asynchronous logging tool for Node.js. An easier way to log & debug complex requests directly from the command line (experimental).
Stars: ✭ 155 (-4.32%)
Mutual labels:  command-line-tool

gister

gister is a command line tool for managing GitHub gists.

Based on gist.rb by @defunkt, this tool helps you to manage a local copy of your gists.

After publishing files to gist.github.com, this tool will:

  • automatically clone the gist repository to local
  • index the content of your gist for code search
  • fetch meta info (e.g. description, url) of the gist from GitHub and add them to gists.list.

You can also use gister to sync your gists (created and starred) between gist.github.com and your machine.

Dependencies

For Linux, BSD, etc, you also need xclip or xsel. For Cygwin, you need putclip/getclip provided by cygutils-extra. (Mas OS X users should be fine with the preinstalled pbcopy/pbpaste.)

Mac OS X users also need GNU versions of sed and date, a.k.a gsed and gdate.

Note: xsel users should use gist.rb v4.1.2+, since there is a bug bitting xsel users in previous versions.

Optional Dependencies

  • csearch

    To search gists on your local machine. If not available, fallbacks to grep.

  • legit

    If available, invokes legit sync to sync gist repository. Legit will stash, fetch, rebase/merge, push, and unstash if necessary.

    The develop branch of legit allows configuration for merge policy:

      * The default smart merge (rebase when suitable)
      * Always merge, never rebase (since [21bb7ed])
      * Always rebase, never merge (since [252b1eb])
      * Fast forward merge only (since [4782928])
    

    If legit is not available, gister will report dirty gist repositories (DIRTY $gist_id) when the environment variable GISTER_AUTO_COMMIT does not exist, and will commit files automatically when GISTER_AUTO_COMMIT exists.

Install

Note that the following instructions only install gister itself. You need to install its dependencies mentioned before yourself.

git clone https://github.com/weakish/gister.git
cd gister
make install
  • Edit config.mk if you do not want to install it to /usr/local.
  • Compatible with both GNU and BSD make.

To uninstall:

; cd gister
; make uninstall

You can also install/uninstall gister via basher.

Usage

init

For the first time, you need to run gister init to associate your GitHub account and configure the directory to store local copies of your gists.

After that, you may run gister sync to fetch all your gists (created and starred) to local.

Warn: sync can only fetch up to 10 million gists for you. If you have more than 10 million gists, you need to modify the source of gister to lift the limit.

Configuration

GISTER_USE_HTTPS: If you need to use https for some reason, set the env var GISTER_USE_HTTPS, but please note this isn't necessarily more secure than ssh, it's just a different option in case your network blocks all traffic other than http/s.

GISTER_AUTO_COMMIT: If you'd like the sync command to automatically commit any local changes you've made before pulling and pushing to gist.github.com, set the GISTER_AUTO_COMMIT env var to anything.

publish

Whenever you want to publish a gist, just use

gister description file.txt ...

This will create the gist with the provided description, clone the gist repo, and put the gistid to clipborad.

Note: you must provide gist description, otherwise gister will fail.

Hint: gister will pass all arguments to gist as gist -c -o -d description ..., so you can use other options that gist understands, e.g. gister description -P will work.

If you've edited your gists at gist.github.com or local machine, without pull/push changesets, you can sync all your gists via gister sync.

If you've deleted your gists at gist.github.com, after gister sync, the directories of deleted gists at your local machine will be marked with a prefix _.

search

Search all of your gists:

gister search regexp

If codesearch is installed, regexp is RE2 (nearly PCRE). Otherwise it is ERE, a.k.a grep -E.

export

Export a gist (available at local) to a git repository, with its full history:

; cd git-repo-root
; gister export gist_id sub_directory_name branch_name

The content of the gist will be exported to sub_directory_name, and the merging message will use branch_name.

migrate

From version 1.0.0, gister uses a different storage structure. If you have used gister <1.0.0, then you need to run this command to migrate:

gister migrate

Storage

/path/to/your/gists
|-- gists.list  # a list of all your gists (including meta info)
|-- repo # git repositories of your gists
|-- tree # working directory of your gist repositories
    |-- 123456 # an example of gist
    |-- _123567890 # an example of gist which you have deleted on gist.github.com
    |-- ...
`-- .csearchindex # code search index (optional)

Contributing

Send pull requests or issues at:

https://github.com/weakish/gister

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].