git-annex/ contribute

Help make git-annex better!

## user support

Hang out in git-annex support areas and answer users' questions. Don't be afraid to get an answer not 100% right, but avoid wild guesses. If you understand the basics of how git-annex works and know how to use it, you are ahead of many users, and can help them out tremendously.

## wiki gardening

This website is a wiki, so you can edit and improve any page.

Or, write a new tip explaining how to accomplish something with git-annex.

## advanced wiki editing

To make larger changes to the website, you can `git clone git://git-annex.branchable.com/ git-annex` and will find the whole website source in `doc/`.

You can even `git push` doc-only changes back without authentication, since it is a wiki!

## bug triage

People often file bugs on git-annex that are easily resolved by helping them with a problem, and perhaps writing some documentation.

Many bugs are also filed without enough information to reproduce the problem, and need to be tagged moreinfo and a comment posted asking the submitter for details.

Once a bug is confirmed to be reproducible, it becomes a lot easier to fix. So it's very helpful to highlight such bugs.

Joey spends a lot of time dealing with this kind of bug triage. If you can take the time to pick a bug that is not tagged as "confirmed" or "moreinfo" from the list of bugs, try to reproduce it and follow up either confirming that the problem exists, or asking the submitter for more info, you'll make Joey more productive!

You can add and modify tags by editing the bug's page with this wiki code:

    [[!taglink  confirmed]]
    [[!taglink  moreinfo]]

## code contributions

download the source code, build it and send patches!

If you know Haskell, git-annex has lots of Haskell code that could be improved. See the coding style and have at it.

If you don't know Haskell, git-annex has many other coding opportunities. You could work to improve the Javascript and CSS of the git-annex webapp, or work on porting libraries needed by the Windows port.

To send patches, either include the patch in a bug report (small patch) or put up a branch in a git repository containing your changes.

Policy on AI generated content (Summary: It's welcome! But see the page for important details.)

## learning some Haskell

Want to learn some Haskell to get hacking on git-annex?

As Haskell programs go, git-annex does not use too many advanced features. Learn You A Haskell will teach you enough to get started.

Of course git-annex does use monads, and particularly the `Annex` monad which gives access to its state about the git repository as well as lower-level IO.

comment 9

Kyle, this is being discussed at http://ikiwiki.info/bugs/anonymous_git_push_broken_again/ but unfortunately I don't think it's the same problem and am becoming doubtful I can keep whack-a-moleing this particular problem source.

Comment by joey — Wed Oct 29 14:05:27 2025
Re: push doc-only changes

> I've fixed the permissions problem, but I'm not entirely sure what caused it in the first place, so not positive my fix will last.

I tried to push a doc/ change today and saw the same error, so it looks like the issue has resurfaced.

Comment by kyle — Wed Oct 29 14:05:27 2025
Re: push doc-only changes

Turns out that anonymous git push had been broken for some time.

I've fixed the permissions problem, but I'm not entirely sure what caused it in the first place, so not positive my fix will last.

Comment by joey — Wed Oct 29 14:05:27 2025
push doc-only changes

First of all I just want to say that I'm really impressed by git-annex. I was looking for such a tool for a long time and I'm really happy that I finally found it. It really does the trick for me to handle all my data.

My problem is now that I wanted to push some changes to doc/, this page says that it shouldn't be a problem even without authentication. But I get following error:

    Enumerating objects: 7, done.
    Counting objects: 100% (7/7), done.
    Delta compression using up to 8 threads
    Compressing objects: 100% (4/4), done.
    Writing objects: 100% (4/4), 460 bytes | 460.00 KiB/s, done.
    Total 4 (delta 3), reused 0 (delta 0), pack-reused 0
    remote: error: cannot lock ref 'HEAD': Unable to create '/home/b-git-annex/source.git/./HEAD.lock': Permission denied
    To git://git-annex.branchable.com/
     ! [remote rejected]     master -> master (failed to update ref)
    error: failed to push some refs to 'git://git-annex.branchable.com/'

Seems to me that I'm not permitted, or am I doing something wrong? Or is the information on this page not up-to-date anymore?

Comment by mzimann — Wed Oct 29 14:05:27 2025
Thanks
Got it! In this case, since the conversation has now moved on, I'll just complete my thought in reply to your most recent comment, but I'll use the workflow you suggested in the future if I need to edit a comment.
Comment by Dan — Wed Oct 29 14:05:27 2025
@Dan

That might be an ikiwiki issue, because you're supposed to be able to git push any change that a user could make on the web, and I think anyone can delete a comment and then make a new comment in its place. Probably two pushes would work ... or just copy and then delete the comment and paste into a new comment.

Comment by joey — Wed Oct 29 14:05:27 2025
Editing Comments?

Is it possible to edit comments on the branchable wiki? I realized there was a sentence I failed to finish when posting this comment and I'd love to go back and finish the thought. The "Edit" button at the top of the page lets me edit the content of the page, but not any of the comments.

I tried cloning the wiki, editing the file corresponding to my comment, and then pushing, but the push was rejected (the changes were in doc tree so I expected it to be accepted, but perhaps comments are more locked down).

Update: It seems I am able to edit comments by cloning the wiki, editing (comments are located in a folder with the same name as the associated page), committing, and then pushing. Yay!

Comment by Dan — Wed Oct 29 14:05:27 2025
comment 2

Please open todo items for patches, don't send them as comments here.

(I suspect that the patch as provided might break compilation with old versions of ghc, or old versions of yesod..)

Comment by joey — Wed Oct 29 14:05:27 2025
comment 10

I have, at least temporarily, fixed the ACL breakage that was causing this anonymous push problem. I say temporarily because apparently a chmod messed up the existing ACLs and so it seems ACLs are pretty fragile.

Comment by joey — Wed Oct 29 14:05:27 2025
GHC HEAD warnings

I have a patch:

https://github.com/ggreif/git-annex/tree/patch-1

It heals e.g.

    Assistant/WebApp/Form.hs:52:1: warning: [-Wredundant-constraints]
        ? Redundant constraint: Monad m
        ? In the type signature for:
               withNote :: (Monad m, ToWidget (HandlerSite m) a) =>
                           Field m v -> a -> Field m v

Comment by ggreif — Wed Oct 29 14:05:27 2025
Comments on this page are closed.