On 2017-03-25, at 5:38 PM, Igor Djordjevic <igor.d.djordje...@gmail.com> wrote:

> Hi Michael,
> 
> Having some more time now, here`s a bit more elaborate answer, mentioning the 
> rebasing flow, if you prefer that instead.
> 
> On Saturday, March 25, 2017 at 2:22:09 AM UTC+1, Michael Gersten wrote:
> 
> So here is what I'm trying to do. 
> 
> "Master", in this case, is the rg3 (primary) github repository of youtube-dl. 
> It gets an update about every 2 days. 
> https://github.com/rg3/youtube-dl.git 
> 
> "Dish" is a pull request that adds in support for Dish networks to the Adobe 
> Pass authentication scheme. It works, but is not yet in the official 
> codebase. It comes from 
> git fetch https://github.com/gkoelln/youtube-dl.git Dish 
> 
> I am not making changes to either Dish (someone else's code) nor master. 
> I made 'merged-dish' so that I would have something to use without getting 
> the local copy of either branch dirty. 
> 
> So, I did 
> 
> git fetch https://github.com/gkoelln/youtube-dl.git Dish 
> git checkout FETCH_HEAD 
> git tag -a Dish 
> git checkout master 
> git checkout -b merged-dish 
> git merge Dish 
> make 
> ... 
> 
> Is there any special reason that you go through hoops of checking-out 
> FETCH_HEAD and tagging it, instead of doing straight `git checkout Dish`? 
> That should provide a remote tracking local branch "Dish" which you can then 
> just keep rebasing on master with `git rebase master Dish` whenever "master" 
> gets updated.

Simple. It was the only/first thing I could get to work :-)

>  
> All good. 
> 
> Two days later, I have to update youtube-dl. So, a pull on master (clean 
> update), and then the question, what's the best way to keep the Dish patches 
> up to date?
> 
> In case where you previously did `git checkout Dish` to get the remote 
> tracking local branch, you would just need to do `git rebase master Dish`  
> (or just `git rebase master` if you`re already on the local "Dish" branch).
>  
> So, my thinking is to rebase my copy of the Dish patch onto master, and then 
> compile that. 
> 
> What actually worked for me was 
> git rebase --onto master master merged-dish 
> I'm surprised that I had to specify master twice, so I really don't 
> understand the arguments to rebase. 
> 
> I would actually be surprised if the command you wrote would do anything 
> useful (with that "master" specified twice), though maybe I`m missing 
> something (in case one "master" gets magically translated to something else, 
> which I wouldn`t expect, but I don`t know...). And why do you use "--onto"? 
> It doesn`t seem to be needed in your case.

I did "--onto master" because I wanted the new base of Dish to be master.

As I said, I don't understand the args to rebase.

> 
> So, to wrap this all up, here`s the flow you may follow to keep "Dish" on top 
> of "master" in case where you don`t own any of them, and using `git rebase` 
> (for the sake of completeness, I`ve started from scratch, initializing a new 
> repository):
> 
> (1) $ git init
> (2) $ git remote add -f -t master rg3 https://github.com/rg3/youtube-dl.git
> (3) $ git remote add -f -t Dish gkoelln 
> https://github.com/gkoelln/youtube-dl.git
> (4) $ git checkout master
> (5) $ git checkout Dish
> (6) $ git rebase master
> 
> 
> After steps (5) and (6), the graphs should look something like this:
> 
> (5) ---A---B---C---D---E---F (master, rg3/master)
>         \
>          Z (Dish, gkoelln/Dish)
> 
> (6) ---A---B---C---D---E---F (master, rg3/master)
>         \                   \
>          Z (gkoelln/Dish)    Z' (Dish)
> 
> 
> Now your local "Dish" is based on top of latest "master", and all is good.
> 
> In the future, each time "rg3/master" gets updated, you can do:
> 
> (7) $ git checkout master
> (8) $ git pull
> (9) $ git rebase master Dish
> 
> 
> After steps (8) and (9), the graphs should look something like this:
> 
> (8) ---A---B---C---D---E---F---G---H---I (master, rg3/master)
>         \                   \
>          Z (gkoelln/Dish)    Z' (Dish)
> 
> (9) ---A---B---C---D---E---F---G---H---I (master, rg3/master)
>         \                               \
>          Z (gkoelln/Dish)                Z'' (Dish)
> 
> 
> Once again, your local "Dish" branch is based on top of latest "master" and 
> ready to use.
> 
> Regards,
> Buga

Well, I just had to update Youtube_dl, and of course, ran into trouble. Two 
things broke.

First: There was a conflicting update. Youtube_dl added an extractor for 
Verizon in the same spot. The fix was simple: delete the conflict markers, and 
keep both sets of changes.

Second: "Dish" is still pointing to the old place. 

keybounceMBP:youtube-dl michael$ git rebase --continue
Applying: Add Dish MSO
Recorded resolution for 'youtube_dl/extractor/adobepass.py'.
keybounceMBP:youtube-dl michael$ gitk
^C
keybounceMBP:youtube-dl michael$ git status
HEAD detached from refs/heads/master
Untracked files:
  (use "git add <file>..." to include in what will be committed)

        Planet Earth II - Season 1 - Grasslands.en.tt

nothing added to commit but untracked files present (use "git add" to track)

The gitk command verified that "Dish" was still pointing to the January update 
that added the support for Dish.

---
Entertaining minecraft videos
http://YouTube.com/keybounce

-- 
You received this message because you are subscribed to the Google Groups "Git 
for human beings" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to git-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to