emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: ELPA contributions?


From: Phillip Lord
Subject: Re: ELPA contributions?
Date: Mon, 12 Oct 2015 21:54:46 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)

Eric Abrahamsen <address@hidden> writes:
>> Still, having said all of this, I have a workflow which works using
>> :external branches, and which works whether or not you have commit
>> access to the "main" repository. I'll try and write this up at some
>> point. I'd love someone to do the same for subtrees, so I can see
>> whether that would have been the right way to go in the first place.
>
> Here's from my notes on how I'm supposed to merge the Gnorb package into
> ELPA. I started using git subtree because it seemed conceptually like
> the right thing. It turned out to be pretty complicated (because I
> didn't understand it well) and I still feel a sense of dread every time
> I go to update the package. I wish there were a simpler way.
>
> I added a local git repo as a remote ("gnorb") to the elpa repo. Pulling
> from the external repo goes:
>
> git fetch gnorb
> git subtree pull --squash --prefix=packages/gnorb gnorb master
>
> Pushing from the ELPA repo to the gnorb remote (I tried this because
> Stefan made some changes directly in the packages):
>
> git subtree push --squash --prefix=packages/gnorb gnorb master
>
> This is followed by an expletive-filled paragraph of notes. I'm not sure
> pushing to the remote ever actually worked. I also tried something
> called "split branch", which barfed several pages of output into my
> shell, to what end I'm still not sure.

Hmmm.

Well, with dash, I've used an external branch. I've set up remotes like so.

elpa    git.sv.gnu.org:/srv/git/emacs/elpa.git (fetch)
elpa    git.sv.gnu.org:/srv/git/emacs/elpa.git (push)
origin  address@hidden:magnars/dash.el.git (fetch)
origin  address@hidden:magnars/dash.el.git (push)
pwl     address@hidden:phillord/dash.el.git (fetch)
pwl     address@hidden:phillord/dash.el.git (push)


Now, I have commit access to ELPA, but read-only access to github.

My workflow (which I normally do in magit, so the commands here are
approximations!) is something like this.

To get changes from github to ELPA,

git pull origin master
git push -v --dry-run elpa master:refs/heads/externals/dash

(without the dry-run!).

Then to get changes from ELPA back to github I do:

git branch fix/something-from-elpa
git pull elpa externals/dash
git push pwl

Then I can open a PR from pwl to dash, which gets merged in. The commits
all match up so the ELPA change gets pulled then pushed to github, then
eventually pulled then pushed from github back to ELPA, but it all works.

At least so far. I've done the last bit once so far. I have no idea what
to do if Magnar ever bounces a PR.

I use a similar workflow for pabbrev, except that I have write access
both sides.

> In the end, when I wanted to get changes from ELPA into my external
> repo, I think it worked okay to simply throw a patch over and apply it
> there. There's no actual correspondence between commit SHAs in ELPA and
> the remote, so simply having the files in the same state is good enough.
>
> But basically it felt like I was going to have to learn all of the
> internals of git to do this with any sort of confidence.


I share the same feeling. The bit that scares me is pushing to ELPA.
Everything else is disposable. If I pull the wrong thing (like
elpa/master) to local, then I can just delete and start again. If I push
the wrong thing to phillord/dash.el that's more of a pain, but not a
disaster. But if I push my local master to the elpa master branch
(rather than externals) I do not know what will happen, but I suspect it
will be bad.

Phil



reply via email to

[Prev in Thread] Current Thread [Next in Thread]