[Rd] R-Forge > GitHub?

Spencer Graves @pencer@gr@ve@ @end|ng |rom prod@y@e@com
Sun Jul 14 20:08:04 CEST 2019


       Thanks to Ott and others, I now have separate GitHub 
repositories, one for each of the packages combined in the Ecdat R-Forge 
project.  In case it might help others in the future, I will summarize 
here key things I did to make this transition:


             1.  I first copied the "Ecfun" package into its own 
directory on my local computer and created a separate GitHub repository 
for that.  I lost the history in doing so, but I can live without that 
history.


             2.  I moved the contents of "~Ecdat/pkg/Ecdat" to "~Ecdat" 
and deleted the now-empty ""pkg/Ecdat" subdirectory.  I first tried to 
do this in RStudio, but wasn't sure it was done correctly.  So I used 
"“git reset --hard HEAD” to revert all that. Then I copied the material 
in Finder on my Mac, so I could see what I was doing.  Then I did "git 
add" of the individual files and folders in a Terminal plus "git rm -r 
pkg" to delete


             3.  Then I set up automatic checking for both packages 
using Travis CI as described by Hadley's "R Packages" 
(http://r-pkgs.had.co.nz/check.html).  [GitHub complained that 
".travis.yml" didn't belong there.  Danny Smith on Rd told me to add it 
to ".Rbuildignore".  I found it was already there, but ".Rbuildignore" 
was not part of the repository.  Now it is.]


             4.  Along the way, GitHub kept asking for my username and 
password, even though I had established SSH authentication.  I traced 
the problem to the ".git/config" that said, "url = 
https://github.com/sbgraves237/Ecdat".  I changed that line to read "url 
= https://sbgraves237:password@github.com/sbgraves237/Ecdat" (where 
"password" is my GitHub password, which I had to change to make it work 
there, because it included "@" ;-)  oops.


             5.  I also had problems with "Warning: ‘inst/doc’ files":  
Those had not existed in the R-Forge versions but appeared somehow in 
migrating them to GitHub.  I deleted them in a Terminal with "git rm -r 
inst/doc".  After "git commit" and "git push", I found they had been 
deleted from the GitHub repository but not my local computer, so I 
deleted them locally -- without any apparent side effects.


       Thanks again,
       Spencer Graves


On 2019-07-03 23:30, Spencer Graves wrote:
>         Thanks so much for your help.
>
>
>         Now your "git push -u origin master" was "![rejected]", after
> creating a new SSH and after your "git clone" and other "git remote
> rename ..." commands seemed to work:
>
>
> $ git clonegit using github.com:joshuaulrich/tmp-ecfun.git  Ecdat
> # Cloning into 'Ecdat'...<snip> done.
>
> $ cd Ecdat/
> $ git remote rename origin tmp
> $ git remote add originhttps://github.com/sbgraves237/Ecdat
> $ git push -u origin master
> #[Username & password OK]
> Tohttps://github.com/sbgraves237/Ecdat
>    ! [rejected]        master -> master (fetch first)
> error: failed to push some refs to 'https://github.com/sbgraves237/Ecdat'
> hint: Updates were rejected because the remote contains work that you do
> hint: not have locally. This is usually caused by another repository pushing
> hint: to the same ref. You may want to first integrate the remote changes
> hint: (e.g., 'git pull ...') before pushing again.
> hint: See the 'Note about fast-forwards' in 'git push --help' for details.
> SpenceravessMBP:Ecdat sbgraves$
>
>
>         Suggestions?
>         Thanks again,
>         Spencer Graves
>
>
> On 2019-07-01 01:05, Ott Toomet wrote:
>> Apparently you created id_rsa key pair with a passphrase. Passphrase
>> is like an additional password protection layer on your ssh key.  I
>> don't know how did you create it.  But you can always create a new one
>> (you should delete the old one before you create a new one) using the
>> shell command 'ssh-keygen'.  It asks for a passphrase, just push enter
>> for an empty passphrase (twice).  You also have to update the ssh
>> public key (id_rsa.pub) on github by supplying the new public key
>> (id_rsa.pub).
>>
>> There are some implications you should be aware of:
>> * if you delete id_rsa*, you cannot use any ssh authorization that
>> relies on this key any more (that's why you have to update on GH).
>> >From the what you write (... created 2 days ago) I guess you do not 
>> use these keys elsewhere but I may be wrong.
>> * if you supply empty passphrase, you bypass the optional extra
>> security layer.  I think this is OK for open source software
>> development on your personal computer but your preferences/situation
>> may differ.
>> * You cannot use the same keys with passphrase if they are created
>> without one.  This is likely not an issue, but if it turns out to be a
>> problem, you can either add passphrase to the default keys, or create
>> another set of keys, passphrase protected.
>>
>> Cheers,
>> Ott
>>
>>
>> On Sun, Jun 30, 2019 at 9:51 PM Spencer Graves
>> <spencer.graves using prodsyse.com  <mailto:spencer.graves using prodsyse.com>> wrote:
>>
>>
>>
>>      On 2019-06-30 06:58, Joshua Ulrich wrote:
>>      <snip>
>>
>>      > I imported both packages into separate repositories:
>>      >https://github.com/joshuaulrich/tmp-ecdat
>>      >https://github.com/joshuaulrich/tmp-ecfun
>>      >
>>      > I changed your email address on your R-Forge commits to match your
>>      > GitHub email address, so R-Forge commits would be associated
>>      with your
>>      > GitHub account.  I also omitted the "move" commit from Ecdat,
>>      and the
>>      > "obsolete > GitHub" commits from both packages.  I've attached a
>>      file
>>      > with the commands I used, if anyone is interested.
>>      >
>>      > You can use my repos by cloning them to your local machine, adding
>>      > your repos as new remotes, and pushing to them.  You would need
>>      to run
>>      > these commands (untested):
>>      >
>>      > ### clone my GitHub repo to your machine
>>      > git clonegit using github.com:joshuaulrich/tmp-ecfun.git  Ecdat
>>
>>
>>      Thanks so much.  Sadly, I'm still having troubles.  This "git
>>      clone ..."
>>      generates:
>>
>>
>>      Enter passphrase for key '/Users/sbgraves/.ssh/id_rsa':
>>
>>
>>             Sadly, I don't know the passphrase it's looking for here,
>>      and I
>>      don't know how to find what it's looking for.  Under GitHub >
>>      Settings >
>>      "SSH and GPG keys", I see an SSH key dated two days ago, when I
>>      cloned
>>      Ecdat from within RStudio.  And in "~.ssh" I see files id_rsa and
>>      id_rsa.pub, both created two days ago.
>>
>>
>>             What do you suggest I try to get past this?
>>
>>
>>             Thanks again for all your help.
>>
>>
>>             Spencer Graves
>>
>>      > cd Ecdat
>>      > ### rename my GitHub repo remote from 'origin' to 'tmp'
>>      > git remote rename origin tmp
>>      > ### add your GitHub repo remote as 'origin'
>>      > ### NOTE: this should be a new, clean repo.
>>      > ###    Rename your existing 'Ecdat' so you don't overwrite it
>>      > git remote add originhttps://github.com/sbgraves237/Ecdat
>>      > ### push to your GitHub repo
>>      > git push -u origin master
>>      >
>>      > Then you need to run similar commands for Ecfun.
>>      >
>>      > Best,
>>      > Josh
>>      >
>>      >>>         Thanks,
>>      >>>         Spencer
>>      >>>
>>      >>>
>>      >>> On 2019-06-29 14:09, Henrik Bengtsson wrote:
>>      >>>> On Sat, Jun 29, 2019 at 9:43 AM Spencer Graves
>>      >>>> <spencer.graves using prodsyse.com
>>      <mailto:spencer.graves using prodsyse.com>> wrote:
>>      >>>>> Hi, Ott et al.:
>>      >>>>>
>>      >>>>>
>>      >>>>>          What's the best way to get "Travis CI" to build and
>>      test the two
>>      >>>>> packages, Ecdat and Ecfun, that have long been combined in
>>      the Ecdat
>>      >>>>> project?
>>      >>>>>
>>      >>>>>
>>      >>>>>          Following Ott's advice and studying studying
>>      Wickham's "R
>>      >>>>> Packages" (http://r-pkgs.had.co.nz/), I was able to
>>      configure RStudio so
>>      >>>>> it would sync using git with
>>      "GitHub.com/sbgraves237/Ecdat".  However,
>>      >>>>> when I tried to configure "Travis CI", it said, "No
>>      DESCRIPTION file
>>      >>>>> found, user must supply their own install and script steps".
>>      >>>>>
>>      >>>>>
>>      >>>>>          Earlier in this thread, I think someone suggested I
>>      make the
>>      >>>>> Ecdat and Ecfun packages separate projects on GitHub (though
>>      I can't
>>      >>>>> find that suggestion now).  This would not be an issue if it
>>      were all
>>      >>>>> local without version control.  With RStudio managing my
>>      interface with
>>      >>>>> GitHub, it now seems quite tricky.
>>      >>>> I'm 99.999% confident that your life will be much much easier
>>      if you
>>      >>>> keep one R package per repository.  If you don't, you'll
>>      probably be
>>      >>>> very lonely when it comes to tools etc. There are built-in 'git'
>>      >>>> commands, but also git utility tools, for extracting a subset of
>>      >>>> folders/files from git repository into new git repositories.
>>      You'll
>>      >>>> still preserve the commit history.  I would deal with this in the
>>      >>>> terminal, using the 'git' client and possible some extraction
>>      tool.
>>      >>>>
>>      >>>> Also, while you spend time on this, have a look at the commit
>>      >>>> authorship that I mentioned previously.  It's nice to have
>>      that in
>>      >>>> place later.
>>      >>>>
>>      >>>> After you got the above in place, then .travis.yml and
>>      appveyor.yml is
>>      >>>> pretty straightforward (might even be a copy'n'paste).
>>      >>>>
>>      >>>> Finally, I saw you put your credentials in the URL when you
>>      cloned.  I
>>      >>>> don't think that's safe, your GitHub credentials will be
>>      stored in the
>>      >>>> ./.git/config file.  Instead, just clone with:
>>      >>>>
>>      >>>> git clonehttps://github.com/sbgraves237/Ecdat.git
>>      >>>>
>>      >>>> You can then configure git to cache your HTTPS credentials for a
>>      >>>> certain time, e.g. 120 minutes, so you don't have to enter
>>      them each
>>      >>>> time you pull/push.  See
>>      https://git-scm.com/docs/git-credential-cache
>>      >>>> for details.  That's what I tell new-comers to
>>      Git(Hub|Lab|...) to
>>      >>>> use.  Personally, I add my public SSH key to GitHub and then
>>      clone
>>      >>>> with the ssh protocol:
>>      >>>>
>>      >>>> git clonegit using github.com:sbgraves237/Ecdat.git
>>      >>>>
>>      >>>> That way my I never have to worry entering my credentials.
>>      >>>>
>>      >>>> /Henrik
>>      >>>>
>>      >>>>>          Suggestions?
>>      >>>>>          Thanks again to all who have offered suggestions so
>>      far.  This
>>      >>>>> migration from R-Forge to GitHub seems complete except for
>>      the automatic
>>      >>>>> tests provided via "Travis CI".
>>      >>>>>
>>      >>>>>
>>      >>>>>          Spencer
>>      >>>>>
>>      >>>>>
>>      >>>>> On 2019-06-28 22:25, Ott Toomet wrote:
>>      >>>>>> Apparently your username/password are wrong.  Can you
>>      clone/push from
>>      >>>>>> other repos?
>>      >>>>>>
>>      >>>>>> You do not need authorization when cloning a public repo,
>>      so even
>>      >>>>>> incorrect credentials may work (haven't tested this
>>      though).  But for
>>      >>>>>> push you have to have that in order.
>>      >>>>>>
>>      >>>>>> I suggest you create ssh keys, upload those to GH, and use ssh
>>      >>>>>> authorization instead of https.
>>      >>>>>>
>>      >>>>>> Cheers,
>>      >>>>>> Ott
>>      >>>>>>
>>      >>>>>> On Fri, Jun 28, 2019 at 8:18 PM Spencer Graves
>>      >>>>>> <spencer.graves using prodsyse.com
>>      <mailto:spencer.graves using prodsyse.com>
>>      <mailto:spencer.graves using prodsyse.com
>>      <mailto:spencer.graves using prodsyse.com>>> wrote:
>>      >>>>>>
>>      >>>>>>       Thanks to Duncan, Henrik and Henrik, Brian, and Gábor:
>>      >>>>>>
>>      >>>>>>
>>      >>>>>>              I created a local copy of the new GitHub
>>      version using the
>>      >>>>>>       following:
>>      >>>>>>
>>      >>>>>>       git clone
>>      >>>>>>https://sbgraves237:mypassword@github.com/sbgraves237/Ecdat.git
>>      >>>>>>
>>      >>>>>>
>>      >>>>>>
>>      >>>>>>              That worked in the sense that I got a local
>>      copy. However,
>>      >>>>>>       after
>>      >>>>>>       I rolled the version number and did "git commit" on
>>      the DESCRIPTION
>>      >>>>>>       files, my "git push" command generated the following:
>>      >>>>>>
>>      >>>>>>
>>      >>>>>>       remote: Invalid username or password.
>>      >>>>>>       fatal: Authentication failed for
>>      >>>>>>
>>       'https://sbgraves237:mypassword@github.com/sbgraves237/Ecdat.git/'
>>      >>>>>>
>>      >>>>>>
>>      >>>>>>              What am I missing? [Note:  I used my actual GitHub
>>      >>>>>>       password in
>>      >>>>>>       place of "mypassword" here, and this "Authentication
>>      failed" message
>>      >>>>>>       reported the GitHub password I used here.]
>>      >>>>>>
>>      >>>>>>
>>      >>>>>>              Thanks,
>>      >>>>>>              Spencer
>>      >>>>>>
>>      >>>>>>
>>      >>>>>>       p.s.  I'm doing this under macOS Mojave 10.14.5.
>>      Also,  I added
>>      >>>>>>       ".onAttach" functions to the R-Forge versions as
>>      Brian G. Peterson
>>      >>>>>>       suggested.  That seemed to work fine.
>>      >>>>>>
>>      >>>>>>
>>      >>>>>>       On 2019-06-28 07:13, Duncan Murdoch wrote:
>>      >>>>>>       > On 28/06/2019 6:26 a.m., Gábor Csárdi wrote:
>>      >>>>>>       >
>>      >>>>>>       >> Instead, you can do as Duncan suggested, and put a
>>      README in your
>>      >>>>>>       >> R-Forge
>>      >>>>>>       >> repository, that points to *your* GitHub
>>      repositor(y/ies). Then the
>>      >>>>>>       >>https://github.com/rforge/ecdat  read only mirror
>>      will pick this up
>>      >>>>>>       >> and will
>>      >>>>>>       >> point there as well.
>>      >>>>>>       >
>>      >>>>>>       > Just for the record:  that was Henrik Singmann's
>>      suggestion, I just
>>      >>>>>>       > agreed with it.
>>      >>>>>>       >
>>      >>>>>>       > Duncan Murdoch
>>      >>>>>>       >
>>      >>>>>>
>>      >>>>>>
>>      >>>>>>               [[alternative HTML version deleted]]
>>      >>>>>>
>>      >>>>>>  ______________________________________________
>>      >>>>>>R-devel using r-project.org  <mailto:R-devel using r-project.org>
>>      <mailto:R-devel using r-project.org  <mailto:R-devel using r-project.org>>
>>      mailing list
>>      >>>>>>https://stat.ethz.ch/mailman/listinfo/r-devel
>>      >>>>>>
>>      >>>>>           [[alternative HTML version deleted]]
>>      >>>>>
>>      >>>>> ______________________________________________
>>      >>>>>R-devel using r-project.org  <mailto:R-devel using r-project.org>  mailing
>>      list
>>      >>>>>https://stat.ethz.ch/mailman/listinfo/r-devel
>>      >>> ______________________________________________
>>      >>>R-devel using r-project.org  <mailto:R-devel using r-project.org>  mailing list
>>      >>>https://stat.ethz.ch/mailman/listinfo/r-devel
>>      >>
>>      >>
>>      >> --
>>      >> Joshua Ulrich  | about.me/joshuaulrich
>>      <http://about.me/joshuaulrich>
>>      >> FOSS Trading  |www.fosstrading.com  <http://www.fosstrading.com>
>>      >
>>      >
>>
>>      ______________________________________________
>>      R-devel using r-project.org  <mailto:R-devel using r-project.org>  mailing list
>>      https://stat.ethz.ch/mailman/listinfo/r-devel
>>
> 	[[alternative HTML version deleted]]
>
> ______________________________________________
> R-devel using r-project.org  mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>



More information about the R-devel mailing list