githooks | Git Hooks for Atlassian Bitbucket Server

 by   Parallels Python Version: Current License: MIT

kandi X-RAY | githooks Summary

kandi X-RAY | githooks Summary

githooks is a Python library. githooks has no bugs, it has no vulnerabilities, it has build file available, it has a Permissive License and it has high support. You can download it from GitHub.

We have implemented pre- and post-receive hooks as a collection of pluggable modules. githooks.py serves as an entry point to them, which loads and runs the modules specified in a configuration file passed to githooks.py via command line. githooks.py reads the standard input and passes , and to each plugin being run. A githooks.py plugin implements any desired pre- or post-receive action, such as indentation check or notification service. A zero status returned from the plugin indicates success (e.g. the ref being updated passed the check). A non-zero status from the plugin aborts the pushing. If multiple refs are pushed, returning a non-zero status from any of the plugins for any of the refs aborts pushing all of them. githooks.py executes plugins regardless of their return status, so all errors are reported at once.
Support
    Quality
      Security
        License
          Reuse

            kandi-support Support

              githooks has a highly active ecosystem.
              It has 17 star(s) with 3 fork(s). There are 5 watchers for this library.
              OutlinedDot
              It had no major release in the last 6 months.
              There are 0 open issues and 2 have been closed. On average issues are closed in 37 days. There are no pull requests.
              OutlinedDot
              It has a negative sentiment in the developer community.
              The latest version of githooks is current.

            kandi-Quality Quality

              githooks has 0 bugs and 0 code smells.

            kandi-Security Security

              githooks has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
              githooks code analysis shows 0 unresolved vulnerabilities.
              There are 0 security hotspots that need review.

            kandi-License License

              githooks is licensed under the MIT License. This license is Permissive.
              Permissive licenses have the least restrictions, and you can use them in most projects.

            kandi-Reuse Reuse

              githooks releases are not available. You will need to build from source code and install.
              Build file is available. You can build the component from source.
              Installation instructions, examples and code snippets are available.
              githooks saves you 418 person hours of effort in developing the same functionality from scratch.
              It has 991 lines of code, 59 functions and 10 files.
              It has medium code complexity. Code complexity directly impacts maintainability of the code.

            Top functions reviewed by kandi - BETA

            kandi has reviewed githooks and discovered the below as its top functions. This is intended to give you an instant insight into githooks implemented functionality, and help decide if they suit your requirements.
            • Check the integrity of a branch
            • Parse git log
            • Compose a mail file
            • Sends emails to the given server
            • Parse git show output
            • Get attribute from a file
            • Run a shell command
            Get all kandi verified functions for this library.

            githooks Key Features

            No Key Features are available at this moment for githooks.

            githooks Examples and Code Snippets

            No Code Snippets are available at this moment for githooks.

            Community Discussions

            QUESTION

            Git pre-merge-commit hook : How do I ignore a file during a merge?
            Asked 2021-May-24 at 08:51
            Context

            I'm working in a complex git flow where some specific branches get specific submodules and some specific config files that require to be committed, but must not be merged.

            These are few files but it is too dangerous to let anyone merge branches without being careful not to merge those.

            In order to make it automatic, I worked on pre-merge-commit hooks, both at server and local side.

            In case of conflict, I make use of .gitattributes and git/config files to resolve the conflict with a custom merge driver. It works like a charm.

            Problem

            However, I'm struggling to make it work when there is no conflict. In this case, the merge is carried out successfully and my pre-merge-hook is triggered. It does its magic and then exit successfully. Though, for some reason, git re-do some merging stuff after the hook which make it useless. Here is the behavior I'm witnessing :

            before the merge

            I got two branches, let's say A_current and B_incoming.

            Both got a file I don't want to be merged. This file is called do_not_merge_me. At some point, do_not_merge_me content changed in B_incoming. Let's say it went from contentA to contentB

            during the merge

            What I see when I'm merging B_incoming into A_current is :

            • The merge goes on, and adds files in the staged area, including do_not_merge_me.
            • The merge succeed, so it triggers my hook
            • my hook finds do_not_merge_me in the staging area and remove it from the staging area (at the end, it's a git reset do_not_merge_me followed by a git checkout do_not_merge_me)
            • my hook ends properly, do_not_merge_me is not in the staging area anymore
            • Git does some dark magic : it redo a merge and re-stage do_not_merge_me
            • Git validate the commit, I see this added in my console :
            ...

            ANSWER

            Answered 2021-May-19 at 01:08

            The short answer is that you can't.

            When git merge runs, it reads three commits into Git's index. These three commits are:

            • the merge base (in slot 1);
            • the --ours commit (in slot 2); and
            • the --theirs commit (in slot 3).

            These are stored in the usual index format: a path name including slashes, a mode (100644 or 100755 for regular files, 120000 for symbolic links, and 160000 for gitlinks), and a hash ID.

            The first part of the merge then compares the modes to make sure those are suitable (if not, this is a merge conflict). Assuming normal files and suitable modes here, it goes on to compare the hash IDs:

            • all three equal? file is successfully merged, drop to slot 0, erase slots 1-3
            • two equal? take the third one: drop to slot 0, erase slots 1-3
            • all three unequal? leave for later, for the real merge code.

            There are a few more special cases (e.g., file exists in merge base and theirs/ours, but deleted in ours/theirs) that are also handled directly in the index, I think, but your particular case—file modified in theirs, but identical in ours and base—hits the middle "two equal? take third" case: the file is the same in your commit and the merge base, so Git just assumes that their updated file is the correct result.

            When Git does this in the early pass, it never runs your merge driver at all. The file goes to staging slot zero—"ready to be committed"—rather than conflicted and you never get a chance to do anything. Your pre-merge-commit will get invoked, but the copy of the file in the index will be the one from the theirs commit.

            We now get into the seriously dark magic part: "the index" assumes that there's a single index (.git/index) that is always used. This isn't really the case: it's mostly true, but:

            • $GIT_INDEX_FILE overrides the name;
            • added work-trees (from git worktree add) have their own index; and
            • various Git commands read the index into memory and then work with that.

            In this case, it looks like git merge has the index in-memory and just uses it as is to make the new commit. Your git add replaces the stage-zero copy in the .git/index file, but git merge does not notice this, and goes on to produce the new merge commit using the incoming copy that was there before it even ran your pre-merge-commit hook.

            Assuming this is all true—and it may change from one Git version to another, depending on when and whether Git does any re-reading of the index—this would answer your question #1, and render the answer to #2 "no" and the answer to #3 be "you're trying to do something outside the range of what Git handles".

            What you want to do is not inherently unreasonable, but Git just doesn't support it.

            Source https://stackoverflow.com/questions/67590221

            QUESTION

            Why doesn't `git cherry-pick` (without `--no-commit`) run my post-commit hook?
            Asked 2021-May-18 at 20:21

            How can I trigger a post-commit hook with the command git cherry-pick ?

            What I've tried:

            • I tried the command git commit -m '...' . It triggered the post-commit hook normally.
            • In the githooks document, there are no hooks related to cherry-pick.
            • After viewing the source code of Git, I found it uses git merge in some cases, and git commit in others. But I'm not sure when to use which command.

            My questions are:

            1. Why don't post-commit hooks work when I use git cherry-pick?
            2. Is there a hook that cherry-pick will run?
            ...

            ANSWER

            Answered 2021-May-18 at 20:21

            Why don't post-commit hooks work when I use git cherry-pick?

            The post-commit hook is run after creating a commit.

            However, cherry-pick does not really create a new commit with new information (from the user perspective) but copies another commit.

            Is there a hook that cherry-pick will run?

            Yes, the prepare-commit-msg should be run before commit is cherry-picked, even though the commit-msg hook is not executed.

            Source https://stackoverflow.com/questions/67588350

            QUESTION

            Error: PostCSS plugin tailwindcss requires PostCSS 8
            Asked 2020-Dec-16 at 10:16

            I installed the new tailwindcss version 2.0 and I've got the following error. I tried to uninstall postcss and tailwindcss but it does not work. Need help.

            ...

            ANSWER

            Answered 2020-Nov-20 at 08:26

            You're integrating Tailwind with a tool that relies on an older version of PostCSS. You can use this doc https://tailwindcss.com/docs/installation#post-css-7-compatibility-build

            Source https://stackoverflow.com/questions/64925926

            QUESTION

            Git is committing node_modules despite being ignored
            Asked 2020-Sep-16 at 20:11

            One of the dependencies in my project uses chromium (which is over 100mb) and makes github throw an error when trying to push it.

            To solve this, I made sure to ignore my node_modules folder.

            However I still get the error when I try to push.

            Here is my .gitignore file:

            ...

            ANSWER

            Answered 2020-Sep-16 at 20:11

            I ended up solving it by removing all historic commits.

            For those also in the same position I followed this.

            Source https://stackoverflow.com/questions/63927098

            QUESTION

            Git Hooks. How to read variables from user input?
            Asked 2020-Aug-05 at 04:37

            I'm trying to create a pre-commit hook. And I want it to interract with user. So, I've found that I can use
            read -p "Enter info: " info
            Or just
            read info

            I created a file:
            pre-commit:

            ...

            ANSWER

            Answered 2020-Aug-05 at 04:37

            As in this gist, you might need to take into account stderr (used by Git commands, as for instance here)

            Source https://stackoverflow.com/questions/63258476

            QUESTION

            pytest githook on Windows with Anaconda
            Asked 2020-May-26 at 13:59

            I have the following setup:

            • Windows 10
            • python installed via Anaconda
            • Virtual environment setup via Anaconda for running and testing my project with pytest
            • git version control via MINGW

            Now I'd like to set a githook that runs all my tests before I push. I have the following problem: I can't activate my virtual environment within the githook.

            I tried to activate my anaconda env in the githook script but I can't get it to work. activate as command is not available and calling the whole path ../Anaconda3/Scripts/activate.bat does nothing.

            I also tried to use python-githooks to configure the hook for me, but this doesn't seem to work in Windows (it can't read PWD from the environment...)

            I'm gratefull for any suggestions.

            ...

            ANSWER

            Answered 2020-May-26 at 13:59

            The solution was to create a .bat-File at the root of the git repository, with:

            call C:\...\Anaconda3\Scripts\activate.bat call activate fs_env pytest

            and to call this file within the pre-push file in .git/hooks with:

            ./runtests.bat

            Source https://stackoverflow.com/questions/62016261

            QUESTION

            Git hook on Ubuntu broken
            Asked 2020-Mar-30 at 18:56

            I recently got a git hook from someone that aims to add the issue number, which is in a specific location of the branch name, to the beginning of all commits. The goal is to take the #number from feature/#number-issue. Here is some info:

            ...

            ANSWER

            Answered 2020-Mar-30 at 18:56

            The problem was that I was trying to make this work on a pre-existing project, with an existing .git directory. I thought changing the config with the --global flag would just work, but apparently the config inside the .git directory of the project did not change, and the old hookspath was still there. When I changed it, the script started working.

            Source https://stackoverflow.com/questions/60935991

            QUESTION

            Azure DevOps force core.hooksPath after clone a repository
            Asked 2020-Mar-30 at 08:40

            I try to implement client side git hooks to a azure devops git repository.

            I added a .githooks directory to the root and implement a pre-commit hook. I commit and push everything to the repository.

            But of curse the hook is only active if I execute

            git config core.hooksPath .githooks

            after cloning the repository.

            The question is here: is there a possiblity to set the git config core.hooksPath per default to .githooks otherwise it will be impossible to force a user to use a hook. :/

            ...

            ANSWER

            Answered 2020-Mar-30 at 08:40

            The question is here: is there a possiblity to set the git config core.hooksPath per default to .githooks otherwise it will be impossible to force a user to use a hook. :/

            Sorry but I'm afraid it's impossible for now, as I know Azure Devops doesn't support such behavior. I totally understand your needs but what you want is not available in either Azure Devops Git Repos or Github Repos.

            Currently you have to make your members run the git config core.hooksPath .githooks command manually to enable your custom hooks. We can't avoid a manual step here cause git hooks is designed to trigger actions at certain points per user instead of per team.

            Source https://stackoverflow.com/questions/60885967

            QUESTION

            webpack config missing in vuejs
            Asked 2020-Mar-26 at 09:24

            My vuejs app's package.json looks like

            package.json

            ...

            ANSWER

            Answered 2020-Mar-26 at 09:24

            In vue cli 3 the webpack config file is generated dynamically at runtime. It has been abstracted away. That is the reason you don't see a webpack config file.

            You can find the webpack config file here:

            Source https://stackoverflow.com/questions/50304066

            QUESTION

            git commit: pre-populate commit subject but still prompt for a commit message
            Asked 2020-Feb-28 at 00:26

            Let's say I'm working on a branch and I run git commit. I am then taken to the commit message prompt where I may enter a commit subject and message. What I'm looking for is a way to have the commit subject pre-populated while still being able to write the commit message manually.

            This question is distinct from this one in that I want the commit subject to be populated but still want to be prompted to enter a commit message, i.e. running git commit -a in git bash results in something like:

            Edit: improper usage of githooks was preventing the accepted answer from the linked question from working. So, the questions are not distinct and this can be marked as a duplicate.

            I'm currently trying to pre-populate the commit subject with a branch name, but in the future I may want that text to be something else. As such, a general solution (not specifically for branch names) would be preferred.

            ...

            ANSWER

            Answered 2018-Dec-16 at 17:52

            The .git/hooks/prepare-commit-msg hook allows you to prepare the commit message before entering the commit message prompt. Withing that hook, you receive the commit message as the first argument, and could, e.g., echo into it:

            Source https://stackoverflow.com/questions/53804764

            Community Discussions, Code Snippets contain sources that include Stack Exchange Network

            Vulnerabilities

            No vulnerabilities reported

            Install githooks

            Then, edit $STASH_HOME/external-hooks/githooks.ini and put your githooks configuration files (.conf) in $STASH_HOME/external-hooks/conf (pre-receive.conf.sample and post-receive.conf.sample demonstrate the minimal setup). Change the files mode so that the user that runs Stash (stash/bitbucket by default) owns the files. Python scripts must be executable:.
            Install and configure Atlassian Stash/Bitbucket Server
            Install External Hooks plugin
            To deploy githooks on a Stash server, clone this repo to External Hooks safe-dir ($STASH_HOME/external-hooks):
            Install dependencies:
            Go to repository Settings -> (Workflow) Hooks. Enable and configure External Pre Receive and Post Receive Hooks. Set Executable to githooks.py and check 'Look for hooks only in safe dir'. Put the path to a configuration file in Positional parameters; githooks.py expects a path that is relative to conf_dir (githooks.ini).

            Support

            If you get an error while using Git Hooks or discover a bug, please report it on the issue tracker.
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries
            CLONE
          • HTTPS

            https://github.com/Parallels/githooks.git

          • CLI

            gh repo clone Parallels/githooks

          • sshUrl

            git@github.com:Parallels/githooks.git

          • Stay Updated

            Subscribe to our newsletter for trending solutions and developer bootcamps

            Agree to Sign up and Terms & Conditions

            Share this Page

            share link