Giter VIP home page Giter VIP logo

magit-annex's Introduction

A Git Porcelain inside Emacs

homepage | manual | faq | wiki | mastodon


Magit is an interface to the version control system Git, implemented as an Emacs package. Magit aspires to be a complete Git porcelain. While we cannot (yet) claim that Magit wraps and improves upon each and every Git command, it is complete enough to allow even experienced Git users to perform almost all of their daily version control tasks directly from within Emacs. While many fine Git clients exist, only Magit and Git itself deserve to be called porcelains.


Keeping its users this excited is a lot of work . If Magit makes you
more productive too, then please consider making a donation.
Thank you! — Jonas Bernoulli

Sponsor my work using Github Sponsors    Sponsor my work using Liberapay
Sponsor my work using Opencollective    Sponsor my work using PayPal

Some alternative donation methods are available.

Getting Started

If you are new to Magit, then either one of the following two articles should help understanding how it differs from other Git clients.

If you are completely new to Magit, then this article is a good visual introduction.

Almost everything that you see in Magit can be acted on by pressing some key, but that's not obvious from just seeing how Magit looks. The screenshots and accompanying text of this article explain how to perform a variety of actions on Magit's output.

Magit differs significantly from other Git interfaces, and its advantages are not immediately obvious simply from looking at a few screenshots as presented in the preceding article.

This article discusses Magit's properties in somewhat more abstract terms.

Video introductions

If you prefer video introductions, head over to that page, where find a collection of such introductions and other videos about Magit, by various creators.


Support and Contributing

Magit has many users and very few maintainers, so we kindly ask to read the appropriate guidelines before getting in contact. — Thanks!

TL;DR We now use discussions for feature requests (not issues) and prefer if you ask the community for support instead of the overworked maintainers.

Please also consider to contribute by supporting other users or by making a monetary donation. — Thanks!


Acknowledgments

Magit was started by Marius Vollmer, and is now maintained by Jonas Bernoulli and Kyle Meyer. Former maintainers are Nicolas Dudebout, Noam Postavsky, Peter J. Weisberg, Phil Jackson, Rémi Vanicat and Yann Hodique. Many more people have contributed code, suggested features or made monetary contributions.

Thanks to all of you, may (the history of) the source be with you!


Compile Test Manual NonGNU ELPA Melpa Melpa Stable

magit-annex's People

Contributors

cwebber avatar kyleam avatar mm-- avatar tarsius avatar vanicat avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

magit-annex's Issues

Flaky test suite

Hello,

We are running magit-annex's test suite on Debian's CI infrastructure. While the tests usually pass we have noticed that every so often a test fails with the following error:

(user-error "Not inside a Git repository")

A quick look at the logs shows this happening with several different of the ten ERT tests. Full logs are here (scroll down that page and look for "thumbs down" icons).

Please let me know if I can help debug. For now, I am disabling the test suite on our CI infrastructure. We already have it disabled during the package build process due to the same error.

magit-git-command is called by 2 args instaed of 1 by magit-annex-command

Hello,
when trying to execute @ : = Annex subcommand (from pwd) the following error occurs:

Debugger entered--Lisp error: (wrong-number-of-arguments (1 . 1) 2)
 magit-git-command("annex info" "/some_path/")
apply(magit-git-command ("annex info" "/some_path/"))
magit-annex-command()
funcall-interactively(magit-annex-command)
....

Somebody might have overseen to adjust the apply command.

Feature request : support for magit-post-stage-hook

I'm trying to get a worklfow were commits are automated with the help of the magit-post-stage-hook, with context-aware commits. However, this hook is not run when running git-annex-add on a file.

I believe it would make sense to support this hook when running git-annex-add, because it does indeed stage the git-annex symlink.

browsing annexed files can be slow

@l can be pretty slow. Even on a modestly large repository, it takes longer than tolerable. In my use case, I want to browse a repository and see which files are present and which are not, and "get" some of those files. The way things work right now, it can take more than a minute. In a offhand test, it seems to take 80 seconds to list a 6500 files repository. Yet listing the files with only git-annex is much, much faster:

$ time sh -c 'git annex find --include "*" | wc -l'
6551
0.38user 0.04system 0:00.40elapsed 105%CPU (0avgtext+0avgdata 51916maxresident)k
0inputs+0outputs (0major+3300minor)pagefaults 0swaps

That's 400 miliseconds, 200 times faster. I thought at first it was because magit-annex was using list instead, but it doesn't seem to be the case:

$ time sh -c 'git annex list | wc -l'
6559
7.98user 1.08system 0:08.27elapsed 109%CPU (0avgtext+0avgdata 37332maxresident)k
0inputs+0outputs (0major+41074minor)pagefaults 0swaps

Still a good 10 times faster. So something fishy is happening when listing the files...

I am not sure how to fix this. From reading the source code, there should be a list-specific popup that would allow me to restrict the list to a subdirectory. This would help, but I can't figure out how to trigger that. Doing @l triggers the full list. Calling M-x magit-annex-list-popup also creates a full list.

Fundamentally, there's something inefficient in the way magit-annex lists files that makes it difficult to use. It would be great to have a smoother operation there, as there are very few interfactive interfaces to operate on git-annex files on Linux platforms. Mac OS X has the incredible git-annex-turtle but there's nothing even remotely ressembling this in Linux...

Thanks!

Default keybinding conflicts with Forge

The Forge extension for Magit also uses @ as a default prefix. magit-annex is certainly older, and keeping consistent with the dired extension seems desirable. On the other hand, Forge is fairly popular these days, and it would be nice for magit-annex not to conflict with it out of the box.

Of course, users can rebind the magit-annex prefix if they want. But what do you think about changing the default prefix to accomodate Forge? Feel free to close this issue if you think maintaining consistency for existing users takes precedence, but maybe a note with a suggested override config could be added to the package frontmatter, or the hardcoded @ autoload could be changed to use a custom variable?

Partially transferred files in unused mode

Unused mode doesn't account for partially transferred files.

  Some annexed data is no longer used by any files:
    NUMBER  KEY
    1       SHA256E-s11--672ee719586ff07b9dec8d03e5449afacc694c3f567b98a98ee96d5a7eb91cf2
  (To see where data was previously used, try: git log --stat -S'KEY')

  To remove unwanted data: git-annex dropunused NUMBER


  Some partially transferred data exists in temporary files:
    NUMBER  KEY
    2       SHA256E-s22392746240--d4def8352bdc25a8149a7d912c98cb967beafc275667691703be691e4ae41d34.h5

  To remove unwanted data: git-annex dropunused NUMBER

[ANN] annexview: Dired interface to git-annex metadata-driven views

[Related to git-annex/Emacs, but not directly related to Magit-annex]

I've started working on a project (annexview) that may be of interest to many Magit-annex users. It provides Dired support for modifying git-annex metadata and creating views. At the moment, it's available through the repo only, but I'll submit it to ELPA at some point.

Magit annex fails to process specified file names matching the regexp [[,]

In the case of a file with [ in its name, it is treated as a wildcard, expanded and then doesn't match the actual file, so we get nil.

In the case of a file with a comma in its name, completing-read-multiple treats each such file name as multiple files because it splits on the comma, and then git-annex fails to find the files.

I have PRs to make for each case if you'd like.

magit-annex-unlock-lock-files test fails in v7 repos

Hello,

I think the magit-annex-unlock-lock-files test needs to be updated for the way that unlocked files work in v7 git-annex repos (which is the new default).

The fourth line of the test, (should-not (magit-annex-unlocked-files)), fails because committing changes to an unlocked file no longer locks it.

Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.