6 ms·
Forge – Work with Git forges from the comfort of Magit
- tptacek 8y agoI know this is off-topic, but: a resource I really wish existed is "how to build Emacs UI like Magit".
- piotr-yuxuan 8y agoYou might have a look on https://github.com/magit/magit-popup https://github.com/magit/magit-popup
- tarsius 8y agoI am hoping to release Magit-Popup's successor Transient tomorrow (or later this week if I can't get the manual done in time).
- zck 8y agoI'm very interested in this. I hadn't seen magit-popup, but I'll check it out, and also Transient when it comes out. If you want anyone to help look over the manual, I'd love to help (email in profile).
- throwaway427 8y agoIn the same vein it would be nice to have the same for "how to build an emacs UI like sx.el for your favorite discussion site".
- mbrock 8y agoOh wow, I didn't know about sx.el either, and I just tried it and ... I'm for sure going to be spending a lot of time in there.
- nextos 8y agoThat's so true! Emacs has got some modern and really well crafted packages during last decade (e.g. Magit, Org or Notmuch). It's a really interesting and vibrant platform right now. I have high hopes for lsp-mode. Another package with great UI is calfw. Of course, there were already plenty of great classic packages (e.g. Dired, Calc, Gnus or Eshell) and modes (e.g. AucTeX, SLIME, ESS...). But things are getting really good lately. ELPA and use-package have also done away with lots of friction points when installing and updating packages.
- rabidrat 8y agoDo you use Emacs besides Magit, and is the Emacs integration essential to what you want? What other tools or workflows would you want to build?
- TeMPOraL 8y agoNot that much off a topic, and a great question. Emacs seems to be probably the only one piece of software still in use that can be considered a software runtime for text-oriented applications and UIs. It gives building blocks that strongly favor function and efficiency over form (though one grows to like the minimal, text-based aesthetics). If you write your code correctly, you can get some pretty awesome features for free - like TRAMP, i.e. access to remote files as if they were local, across a variety of protocols and with ability to tunnel through networks. But my absolute favorite right now is that, unless you purposefully screw it up, your Elisp program will look and work the same way on GUI Emacs frames as it will work on Terminal frames. That is, I get to use it from anywhere, by SSH-ing to my computer and running `emacsclient -t`. A capability I use extensively for programming on the go, and which alone gave my small laptop years of extra useful life. I love Magit, and I'm excited for more software that's built on Emacs.
- mattnewport 8y agoIs "forge" a well known term in this context? What does it mean exactly? A web based git host that adds collaboration features like issues and pull requests? Seems like that from the context but I've not seen the term before.
- piotr-yuxuan 8y agohttps://en.wikipedia.org/wiki/Forge_(software) https://en.wikipedia.org/wiki/Forge_(software)
- dstaley 8y agoThis article has no citations for the history/use of the term. It was largely written by a single editor over a decade ago.
- stronglikedan 8y ago> over a decade ago If it ain't broke, don't fix it. Also: https://www.computerweekly.com/blog/Open-Source-Insider/What-is-a-software-forge https://www.computerweekly.com/blog/Open-Source-Insider/What...
- stefan_ 8y agoThat's exactly the kind of article that gets written from a page on Wikipedia.
- dstaley 8y agoFurthermore the "definition" they provide is something they came up with; a Google search for portions of the definition only returns results for the article itself.
- stronglikedan 8y agoThen your Google isn't my Google. If the definition is used on sr.ht[0], then it's pretty much galvanized. Not to mention that I've heard it used that very way over the decades that I've been in software development. [0] https://meta.sr.ht https://meta.sr.ht
- detaro 8y agopreviously: https://news.ycombinator.com/item?id=18722548 https://news.ycombinator.com/item?id=18722548
- mattnewport 8y agoI hear good things about magit, does anyone have any good learning resources for someone who is relatively new to emacs?
- weavie 8y agoIt doesn't really get any better than the documentation on the homepage: https://magit.vc/ https://magit.vc/
- mattnewport 8y agoThanks, I probably just need to start forcing myself to use it for a while and try and get over the initial hump of just wanting to get things done quickly using the tools I already know.
- AlexCoventry 8y agoIt depends almost completely on git for tracking repository state, at least for basic usage, so you can switch back and forth to your familiar methods quite safely. That way, you only have to learn a little of it at a time.
- TeMPOraL 8y agoAnd at any time, you can just use "! !" to run an arbitrary git command on your repo, if you so choose. Since Magit depends on git for status tracking, you don't risk breaking anything.
- 180wdock 8y agoHere's a recent talk/screencast by John Wiegley that covers a lot of Magit tips and tricks: https://www.youtube.com/watch?v=j-k-lkilbEs https://www.youtube.com/watch?v=j-k-lkilbEs
- aloisamae 8y agoThank you for this!
- erk__ 8y agoI have been using it happily, but I have an issue where I have a fork on github, but I can't get the forge to point at upstream instead of my fork, it changes to the other github as soon as I set pus Default if I remember correctly. Is there any way to do this?
- tarsius 8y agoThe convention is to name the upstream remote ~origin~. If you follow this convention, then you have to do nothing else and the remote by that name is automatically used, provided it exists and regardless of whether other remotes exist. If it does not exist, then no other remotes are tried. If you do not follow the naming convention, then you have to inform Forge about that by setting the Git variable ~forge.remote~ to the name that you instead use for upstream remotes. If this variable is set, then Forge uses the remote by that name, if it exists, the same way it may have used ~origin~ if the the variable were undefined. I.e. it does not fall through to try ~origin~ if no remote by your chosen name exists. This is from the manual, but I will have to move (or copy) to a more prominent place within the manual. (This is currently in the node titled "Token Creation".)