# dotbare

https://github.com/kazhala/dotbare



### Installation

#### Dépendances 

```bash
brew install fzf tree bat (ou highlight, coderay) delta (ou diff-so-fancy)
```



#### zsh:

```bash
# zinit

zinit light kazhala/dotbare

# antibody

antibody bundle kazhala/dotbare
```

ou

```bash
$ git clone https://github.com/kazhala/dotbare.git ~/.dotbare

puis source ~/.dotbare/dotbare.plugin.zsh dans les fichiers .zshrc
```



#### bash:

```bash
$ git clone https://github.com/kazhala/dotbare.git ~/.dotbare

puis source ~/.dotbare/dotbare.plugin.bash dans les fichiers .bashrc ou .bash_profile
```

##### 

#### Initialisation:

```bash
# init dépôt git bare (dans $HOME/.cfg).

$ dotbare finit
```



### Utilisation:

#### Ajouter les fichiers à suivre:

```bash
# Fichiers

$ dotbare fadd -f
# ou
$ dotbare add [FIELNAME]

# Répertoires

$ dotbare fadd -d
# ou
$ dotbare add [DIRECTORY]
```



#### Commit changes and push to remote:

```bash
$ dotbare commit -m "First commit"
$ dotbare remote add origin [URL]
$ dotbare push -u origin master
```



#### Alias:

```bash
alias dbpush='dotbare push -u mbv master'
alias dbadd='dotbare add -f $1'
alias dbcomm='dotbare commit -am $1'
alias dbback='dotbare fbackup'
```



#### Préférences:

```bash
# Default value
export DOTBARE_DIR="$HOME/.cfg"

export DOTBARE_TREE="$HOME"

export DOTBARE_BACKUP="${XDG_DATA_HOME:-$HOME/.local/share}/dotbare"

export DOTBARE_KEY="
  --bind=alt-a:toggle-all       # toggle all selection
  --bind=alt-j:jump             # label jump mode, sort of like vim-easymotion
  --bind=alt-0:top              # set cursor back to top
  --bind=alt-s:toggle-sort      # toggle sorting
  --bind=alt-t:toggle-preview   # toggle preview
"

export DOTBARE_FZF_DEFAULT_OPTS="--preview-window=right:65%"

export DOTBARE_PREVIEW="cat -n {}"

export DOTBARE_DIFF_PAGER="delta --diff-so-fancy --line-numbers"
```



#### fbackup:

D'après la variable DOTBARE_BACKUP

- Backup files to /Users/bruno/.local/share/dotbare.
- This is useful when untracking files or migrating to new machines.
- Default: backup all tracked files using cp command to /Users/bruno/.local/share/dotbare directory.

```bash
# -$HOME/.local/share/dotbare

#Sauvegarger tous les fichiers:

$ dotbare fbackup

# Pour choisir les fichiers à backuper:

$ dotbare fbackup -s

# -s, --select					list all tracked files and only backup the selected files.
# -p PATH, --path PATH	specify path of files to backup.
# -m, --move						use 'mv' instead of the default 'cp' command to backup.

```



#### fedit:

- Select files/commits through fzf and edit selected files/commits in EDITOR.
- Default: list all tracked dotfiles and edit the selected files.

```bash
$ dotbare fedit

#  -h, --help			show this help message and exit.
#  -m  						uniquement les fichiers modifiés
#  -c 						affiche les commits
```

#### fgrep:

- Grep words within tracked files and select to edit matches.

```bash
$ dotbare fgrep

#  -h, --help					show this help message and exit.
#  -c COL, --col COL	specify the column number to start searching.
#  -f, --full					include all column during search, as if using '--col 1'.
```

#### flog:

- Interactive log viewer with action menu.
- Action menu contains options including revert|reset|edit|checkout|exit.
- Default: list all commits and prompt a menu to select action to perform.

```bash
$ dotbare flog

#  -h, --help			show this help message and exit.
#  -r, --revert		revert the selected commit and skip action menu.
#  -R, --reset		reset HEAD back to selected commit and skip action menu.
#  -e, --edit			edit selected commit through interactive rebase and skip action menu.
#  -c, --checkout	checkout selected commit and skip action menu.
#  -y, --yes			acknowledge all actions that will be taken and skip confirmation.
```

#### freset:

- Reset(unstage) the selected staged files. (Default)
- Reset the HEAD to certain commits by using -c flag.

```bash
$ dotbare freset

#  -h, --help			show this help message and exit.
#  -c, --commit		reset HEAD to certain commit, default --mixed flag, reset HEAD to certain commit put all changes into modified state.
#  -S, --soft		reset commit using --soft flag, reset HEAD to certain commit without modify working tree.
#  -H, --hard		reset commit using --hard flag, reset HEAD to certain commit discard all changes from the working tree.
#  -y, --yes		acknowledge all actions that will be taken and skip confirmation.
```



#### fcheckout:

- Select files/commit/branch through fzf and checkout the selected objects.
- Files: checkout the version in HEAD or in a specific commit (reset files content back to the selected commit).
- Branch: switch to the selected branch.
- Commit: switch to a specific commit.
- Default: list all modified files and reset selected files back to HEAD.

```bash
$ dotbare fcheckout

#  -h, --help			show this help message and exit.
#  -s, --select		list all tracked files and select a commit to checkout the selected files.
#  -b, --branch		list all branch and checkout/switch the selected branch.
#  -c, --commit		list all commits and checkout selected commit.
#  -y, --yes		acknowledge all actions that will be taken and skip confirmation.

```



#### fstash

- View and manage stash interactively

```bash
$ dotbare fstash

# Default: list all stashes and apply the selected stash files

#  -h, --help			show this help message and exit.
#. -s, --select		list modified files and stash the selected files
#  -d, --delete		list all stashes and delete the selected stash files
#  -p, --pop 			use 'stash pop' instead of 'stash apply'
```



#### fstat

- Display interactive git status menu
- Toggle file stage/unstage interactively

```bash
$ dotbare fstat

#  -h, --help		show this help message and exit.
```



#### funtrack

- Untrack selected files from git

```bash
$ dotbare funtrack

# Default: list all tracked files and permanently untrack the selected files  (using git rm --cached filename).
# Files will be remove from index while keeping the file in your current system.
# However, when your other computers pull down the changes, the untracked files will be deleted.
# Make sure to run dotbare fbackup before pulling down the changes.

# Alternatively use the -t flag (using git update-index --assume-unchanged [path]) to temporarily untrack a file but keeping the files when other computers pull down the changes.


#  -h, --help		show this help message and exit.
#  -t, --temp		list all trackes files and temporarily ignore changes of the selected files.
#  -r, --resume	list all trackes files and resume tracking changes of the selected files.
#  -y, --yes		acknowledge all actions that will be taken and skip confirmation.
```



#### fupgrade

- Upgrade dotbare to the latest master

```bash
$ dotbare fupgrade

#  -h, --help		show this help message and exit.
```



#### Liste des fichiers sauvegardés:

```bash
~/.local/share/dotbare                                                         08:42:08
❯ l
Permissions  Size User  Group Date Modified Date Created Name
.rwxr-xr-x  1,1Ki bruno staff 25 jul  2021  25 jul  2021  .backup_list.conf*
.rwxr-xr-x  2,5Ki bruno staff 25 jul  2021  25 jul  2021  .bash_aliases*
.rwxr-xr-x  7,8Ki bruno staff  4 fév 20:07  25 jul  2021  .bash_profile*
.rw-r--r--    259 bruno staff  4 fév 20:07  24 jul  2021  .bashrc
drwxr-xr-x      - bruno staff 12 aoû  2021  12 aoû  2021  .config/
.rw-r--r--    236 bruno staff 21 nov  2021   1 aoû  2021  .diractions
.rwxr-xr-x   21Ki bruno staff 25 jul  2021  25 jul  2021  .dircolors*
.rwxr-xr-x     10 bruno staff 25 jul  2021  25 jul  2021  .exclude-rsync.txt*
.rw-r--r--    318 bruno staff 16 fév 15:02   4 aoû  2021  .gitconfig
.rwxr-xr-x    134 bruno staff 12 aoû  2021  25 jul  2021  .gitignore*
.rw-r--r--    645 bruno staff  7 aoû  2021   7 aoû  2021  .my.cnf.gpg
drwxr-xr-x      - bruno staff  5 mai 08:33  12 aoû  2021  .nano/
.rw-r--r--  2,7Ki bruno staff 25 jul  2021  25 jul  2021  .nanorc
.rw-r--r--@ 9,7Ki bruno staff  1 aoû  2021   1 aoû  2021  .p10k.zsh
drwxr-xr-x      - bruno staff 12 aoû  2021  12 aoû  2021  .ssh/
.rwxr-xr-x     69 bruno staff 25 jul  2021  25 jul  2021  .ticker.conf*
.rwxr-xr-x    355 bruno staff 25 jul  2021  25 jul  2021  .ticker.yaml*
.rw-r--r--    130 bruno staff 17 aoû  2021  23 jul  2021  .zprofile
.rwxr-xr-x@   349 bruno staff 31 jul  2021  31 jul  2021  .zsh_plugins.txt*
.rw-r--r--     28 bruno staff  1 aoû  2021   1 aoû  2021  .zshbookmarks
.rw-r--r--@  25Ki bruno staff  4 mai 08:06  12 aoû  2021  .zshrc
.rw-r--r--@  16Ki bruno staff 31 jul  2021  31 jul  2021  .zshrc-antibody.bak

```

