Hacker News new | ask | show | jobs
by bonquesha99 3748 days ago
Misc tools to make development more efficient:

https://github.com/shuber/owners - Take ownership of your code! Knowing who owns a project or section of a code base is very helpful when asking questions or requesting feedback. This gem allows developers to define OWNERS files throughout their repository to provide a human and machine readable way to determine who the maintainers are for specific files of code.

https://github.com/shuber/monolith - Generate a monolithic repository for a set of git repositories!

https://github.com/shuber/tmux-git - Display git information in your TMUX status lines! Plays real nicely with vim-promiscuous.

https://github.com/shuber/vim-promiscuous - Instant context switching built on git and vim sessions! It basically takes a snapshot of the following and let's you rollback to previous states:

- All of your vim tabs, buffers, splits, and folds along with their sizes and positions

- The location of your cursor for each buffer

- The actively selected tab/buffer

- Your undo history (each branch's undo history is saved separately)

- Your git stage with all tracked/untracked files and staged/unstaged hunks

1 comments

Your monolith project seems very interesting to me, because I have 3 repos for components of a common project that leaded to duplicated code. But I also regret to have added some assets code that lead to a massive and slow repo, so it seems it is also possible to filter the history from some directories but I am not quite sure from your description.
Nice, we had a similar issue which is why we decided to merge the repositories. It makes sharing code, extracting shared dependencies, and reviewing PRs so much easier when you can see changes across all projects in one diff!

You can absolutely filter the history from some directories by specifying a script to run after the repositories have been cloned. In your monolith.yml you can add something like:

  # Optional list of commands to run right after
  # all of the repositories above have been cloned.
  #
  # These are handy for things like rewriting history
  # to remove large unused files or sensitive information.
  after_clone:
    - ./remove_large_assets
Then define the `remove_large_assets` script in whatever language you want and have it run the appropriate git commands to filter that history!

After the files are filtered, the monolith repository will be generated without all that junk that was bloating your git history.