Re: [sage-combinat-devel] Re: sage-combinat move to git

2013-11-14 Thread Daniel Bump

I have a branch called:

remotes/origin/public/combinat/15361-branching-rules

I the repository, switched to this branch, calling the local branch
15361-branching-rules. I did some work, then tried to push. Per the
instructions at the tentative conventions page
(http://wiki.sagemath.org/TentativeConventions) I used the command:

$ git push --set-upstream origin 
15361-branching-rules:remotes/origin/public/combinat/15361-branching-rules

remote: FATAL: W 
refs/heads/remotes/origin/public/combinat/15361-branching-rules sage bump 
DENIED by fallthru
remote: error: hook declined to update 
refs/heads/remotes/origin/public/combinat/15361-branching-rules
To g...@trac.sagemath.org:sage.git
! [remote rejected] 15361-branching-rules - 
remotes/origin/public/combinat/15361-branching-rules (hook declined)
error: failed to push some refs to 'g...@trac.sagemath.org:sage.git'

I am on the right branch.

Is this a permission problem? I have an ssh key uploaded for this machine.

Or is the above command wrong?

Dan



-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/groups/opt_out.


Re: [sage-combinat-devel] Re: sage-combinat move to git

2013-11-14 Thread Anne Schilling
Hi Dan,

Most likely, your local branch is already linked to the remote branch, so
a simple

git push

should suffice. You can see how your local branches are linked, look in your
$SAGE_ROOT/.git/config

If you want to change the default mapping, you can do

git branch 15361-branching-rules --set-upstream-to 
origin/public/combinat/15361-branching-rules

and then

git push.

I think in your example, there should not be any remotes in 
remotes/origin/public/combinat/15361-branching-rules.

I hope this helps,

Anne

On 11/14/13 2:22 PM, Daniel Bump wrote:
 
 I have a branch called:
 
 remotes/origin/public/combinat/15361-branching-rules
 
 I the repository, switched to this branch, calling the local branch
 15361-branching-rules. I did some work, then tried to push. Per the
 instructions at the tentative conventions page
 (http://wiki.sagemath.org/TentativeConventions) I used the command:
 
 $ git push --set-upstream origin 
 15361-branching-rules:remotes/origin/public/combinat/15361-branching-rules
 
 remote: FATAL: W 
 refs/heads/remotes/origin/public/combinat/15361-branching-rules sage bump 
 DENIED by fallthru
 remote: error: hook declined to update 
 refs/heads/remotes/origin/public/combinat/15361-branching-rules
 To g...@trac.sagemath.org:sage.git
 ! [remote rejected] 15361-branching-rules - 
 remotes/origin/public/combinat/15361-branching-rules (hook declined)
 error: failed to push some refs to 'g...@trac.sagemath.org:sage.git'
 
 I am on the right branch.
 
 Is this a permission problem? I have an ssh key uploaded for this machine.
 
 Or is the above command wrong?
 
 Dan

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/groups/opt_out.


Re: [sage-combinat-devel] Re: sage-combinat move to git

2013-11-14 Thread Volker Braun
git push remote local branch name:remote branch name

The remote branch name should just be 
public/combinat/15361-branching-rules, without the remotes/origin/. You 
don't have write permissions outside u/bump/* and public/* on the remote.

Your local repo has internally a ref called 
remotes/origin/public/combinat/15361-branching-rules for its copy of the 
remote branch (see git show-ref for the internals). But that only exists on 
your local repo, not on the remote.


On Thursday, November 14, 2013 5:22:25 PM UTC-5, bump wrote:


 I have a branch called: 

 remotes/origin/public/combinat/15361-branching-rules 

 I the repository, switched to this branch, calling the local branch 
 15361-branching-rules. I did some work, then tried to push. Per the 
 instructions at the tentative conventions page 
 (http://wiki.sagemath.org/TentativeConventions) I used the command: 

 $ git push --set-upstream origin 
 15361-branching-rules:remotes/origin/public/combinat/15361-branching-rules 

 remote: FATAL: W 
 refs/heads/remotes/origin/public/combinat/15361-branching-rules sage bump 
 DENIED by fallthru 
 remote: error: hook declined to update 
 refs/heads/remotes/origin/public/combinat/15361-branching-rules 
 To g...@trac.sagemath.org:sage.git 
 ! [remote rejected] 15361-branching-rules - 
 remotes/origin/public/combinat/15361-branching-rules (hook declined) 
 error: failed to push some refs to 'g...@trac.sagemath.org:sage.git' 

 I am on the right branch. 

 Is this a permission problem? I have an ssh key uploaded for this machine. 

 Or is the above command wrong? 

 Dan 





-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/groups/opt_out.


Re: [sage-combinat-devel] Re: sage-combinat move to git

2013-11-10 Thread Anne Schilling
Dear Dan,

Thank you for making the list. I am a little worried that this might actually
not catch all dependencies. For example trac_14847-whittaker.patch definitely
depends on the functionality of trac_14102-nonsymmetric-macdonald.patch even 
though
they do not touch the same files.

Best wishes,

Anne

On 11/10/13 7:48 AM, bump wrote:
 There are two attachments to this message, which may be useful in figuring 
 out what needs to be done in transitioning the queue to git. This  requires 
 unravelling the dependencies of the queue.
 
 Concerning only patches that apply when the queue is applied to sage-5.12, 
 the first attachment contains (for each relevant file in sage) a list of 
 patches that touch that file. So for example, here
 are the files that touch
 root_lattice_realizations:
 
trac_10963-more_functorial_constructions-nt.patch
trac_14102-nonsymmetric-macdonald.patch
crystal_plots-ts.patch
root_system_improvements-ts.patch
trac_14901-lie_algebras-ts.patch
coxeter_groups-coset_representatives-nt.patch
extended_affine_weyl_groups_sd40.patch
 
 The second attachment gives, for each patch, a list all earlier patches in 
 the queue that touch a common file. Of
 the two attachments, the second one may be the most useful.
 
 Daniel Bump

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/groups/opt_out.


Re: [sage-combinat-devel] Re: sage-combinat move to git

2013-11-10 Thread bump



 Thank you for making the list. I am a little worried that this might 
 actually 
 not catch all dependencies. For example trac_14847-whittaker.patch 
 definitely 
 depends on the functionality of trac_14102-nonsymmetric-macdonald.patch 
 even though 
 they do not touch the same files. 

 And conversely there might be false positives among the reported 
dependencies if
two patches touch the same file but in an independent way.

Dan 

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/groups/opt_out.


[sage-combinat-devel] Re: sage-combinat move to git

2013-11-09 Thread Mike Zabrocki
Hi,

Sorry I had to leave yesterday during the discussion
of the workflow/searching. It seems like you made a lot
more progress on the document.

I was reading the searching section and I still don't quite
see how to tell who wrote the code or who posted:

origin/public/combinat/sf/sp_orth

I even searched the logs and I didn't see the name of branch
but I did see:

-
commit 226c37a8561486888d0231095ac6df379aa46323
Author: Travis Scrimshaw tscrim at ucdavis.edu
Date: Fri Nov 8 18:59:36 2013 -0800

Initial version of symplectic and orthogonal basis for symmetric functions.

Currently this does not work correctly because the basis do not
give a Hopf structure by converting to the Schur basis and
it is only a filtered basis, not a graded basis.
-

So I in this case I could realize that this commit message
is probably related to this branch, but in general the commit 
messages are not so helpful:

more grammar fixed
typo fixed
more doc fixes

and I had to sift through those to find the one that I wanted. If it had
been committed 3 weeks ago I doubt that there would be any chance
that I would be able to figure out who is working on it to contact them
to let them know I was interested. I'm sure that there is a way to
resolve this issue.

Is there a command to look up the creator of a branch?

I found one way to (maybe) resolve this was to checkout the branch
and then execute the command:

$ git log HEAD ^master

but what didn't work was

$ git log --remotes='origin/public/combinat/sf/sp_orth' ^origin/master

Shouldn't this command show me the commits on that branch?

-Mike

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/groups/opt_out.


[sage-combinat-devel] Re: sage-combinat move to git

2013-11-09 Thread Mike Zabrocki
I guess that I should make it clearer that the first time I searched
the log with:
$ git log
to find the commit message by Travis by looking through all of
them to find the one relevant to the branch I was interested in.

It wasn't until later that I realized that could checkout the branch
first and then check the logs only relevant to that branch.

The command that I think should work to read the log of a branch
without checking it out doesn't seem to work for me.

-Mike

On Saturday, 9 November 2013 14:24:18 UTC-5, Mike Zabrocki wrote:

 Hi,

 Sorry I had to leave yesterday during the discussion
 of the workflow/searching. It seems like you made a lot
 more progress on the document.

 I was reading the searching section and I still don't quite
 see how to tell who wrote the code or who posted:

 origin/public/combinat/sf/sp_orth

 I even searched the logs and I didn't see the name of branch
 but I did see:

 -
 commit 226c37a8561486888d0231095ac6df379aa46323
 Author: Travis Scrimshaw tscrim at ucdavis.edu
 Date: Fri Nov 8 18:59:36 2013 -0800

 Initial version of symplectic and orthogonal basis for symmetric functions.

 Currently this does not work correctly because the basis do not
 give a Hopf structure by converting to the Schur basis and
 it is only a filtered basis, not a graded basis.
 -

 So I in this case I could realize that this commit message
 is probably related to this branch, but in general the commit 
 messages are not so helpful:

 more grammar fixed
 typo fixed
 more doc fixes

 and I had to sift through those to find the one that I wanted. If it had
 been committed 3 weeks ago I doubt that there would be any chance
 that I would be able to figure out who is working on it to contact them
 to let them know I was interested. I'm sure that there is a way to
 resolve this issue.

 Is there a command to look up the creator of a branch?

 I found one way to (maybe) resolve this was to checkout the branch
 and then execute the command:

 $ git log HEAD ^master

 but what didn't work was

 $ git log --remotes='origin/public/combinat/sf/sp_orth' ^origin/master

 Shouldn't this command show me the commits on that branch?

 -Mike


-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/groups/opt_out.


Re: [sage-combinat-devel] Re: sage-combinat move to git

2013-11-09 Thread Anne Schilling
Hi Mike,

You can get do the search remotely via

$ git log --remotes='origin/public/combinat/sf/sp_orth*' ^origin/master 
--oneline
8864ef1 Added files.
226c37a Initial version of symplectic and orthogonal basis for symmetric 
functions.

Note there is a * after the name.

Best,

Anne

On 11/9/13 12:34 PM, Mike Zabrocki wrote:
 I guess that I should make it clearer that the first time I searched
 the log with:
 $ git log
 to find the commit message by Travis by looking through all of
 them to find the one relevant to the branch I was interested in.
 
 It wasn't until later that I realized that could checkout the branch
 first and then check the logs only relevant to that branch.
 
 The command that I think should work to read the log of a branch
 without checking it out doesn't seem to work for me.
 
 -Mike
 
 On Saturday, 9 November 2013 14:24:18 UTC-5, Mike Zabrocki wrote:
 
 Hi,
 
 Sorry I had to leave yesterday during the discussion
 of the workflow/searching. It seems like you made a lot
 more progress on the document.
 
 I was reading the searching section and I still don't quite
 see how to tell who wrote the code or who posted:
 
 origin/public/combinat/sf/sp_orth
 
 I even searched the logs and I didn't see the name of branch
 but I did see:
 
 -
 commit 226c37a8561486888d0231095ac6df379aa46323
 Author: Travis Scrimshaw tscrim at ucdavis.edu http://ucdavis.edu
 Date: Fri Nov 8 18:59:36 2013 -0800
 
 Initial version of symplectic and orthogonal basis for symmetric 
 functions.
 
 Currently this does not work correctly because the basis do not
 give a Hopf structure by converting to the Schur basis and
 it is only a filtered basis, not a graded basis.
 -
 
 So I in this case I could realize that this commit message
 is probably related to this branch, but in general the commit
 messages are not so helpful:
 
 more grammar fixed
 typo fixed
 more doc fixes
 
 and I had to sift through those to find the one that I wanted. If it had
 been committed 3 weeks ago I doubt that there would be any chance
 that I would be able to figure out who is working on it to contact them
 to let them know I was interested. I'm sure that there is a way to
 resolve this issue.
 
 Is there a command to look up the creator of a branch?
 
 I found one way to (maybe) resolve this was to checkout the branch
 and then execute the command:
 
 $ git log HEAD ^master
 
 but what didn't work was
 
 $ git log --remotes='origin/public/combinat/sf/sp_orth' ^origin/master
 
 Shouldn't this command show me the commits on that branch?
 
 -Mike

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/groups/opt_out.


Re: [sage-combinat-devel] Re: sage-combinat move to git

2013-11-09 Thread Mike Zabrocki
Thanks,
I thought the * was to complete the name if I didn't know the ending.
-Mike

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/groups/opt_out.


Re: [sage-combinat-devel] Re: sage-combinat move to git

2013-11-09 Thread Anne Schilling
 Sorry I had to leave yesterday during the discussion
 of the workflow/searching. It seems like you made a lot
 more progress on the document.

Yes, and more this morning! I will send out an e-mail in a second
when the page is semi-stable.

One thing that Travis and I tried out in practice after you left was the model
where a developer keeps a copy of a branch in his/her own user space u/user
and in public/ when it is almost finished/being reviewed. But we both
did not like that workflow, so I think the best option will be
to follow what we currently suggest on the page.

We can probably write some scripts for easy searching once the dust
settles :-) like

- search which branches a user has worked/is working on (i.e. did commits to)
  relative to master
- search for combinat (that is already easy)
etc

 Is there a command to look up the creator of a branch?
 
 I found one way to (maybe) resolve this was to checkout the branch
 and then execute the command:
 
 $ git log HEAD ^master
 
 but what didn't work was
 
 $ git log --remotes='origin/public/combinat/sf/sp_orth' ^origin/master
 
 Shouldn't this command show me the commits on that branch?

I guess you could do

git log --remotes='origin/public/combinat/sf/sp_orth*' ^origin/master | less

and then browse this file. The first commit shows the person who created
the branch.

Best,

Anne

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/groups/opt_out.


Re: [sage-combinat-devel] Re: sage-combinat move to git

2013-11-09 Thread Anne Schilling
Dear Sage Days 54 Participants,

Thanks again all for coming to Davis and working on the new git workflow
together.

Andrew and Volker, thank you for coming and teaching us the basics!

The overall sentiment was that the new workflow is a great improvement
over the old workflow. Soon we won't have to constantly install
new beta-versions of Sage any longer, but can just pull from master.
The workflow and interactions with Trac are much easier for a developer!
And, the constant hassle with updating the sage-combinat queue will
disappear!

During the week, we came up with the following document

http://wiki.sagemath.org/TentativeConventions

which should make it easy to learn the new workflow. Mathieu will test
it next week in Montreal.

Dan and Travis, thank you for co-organizing!

Best,

Anne

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/groups/opt_out.


[sage-combinat-devel] Re: sage-combinat move to git

2013-11-04 Thread Simon King
Hi!

Meanwhile I got convinced that the change to git and the use of the new
Sage development scripts is mostly a very good thing.

My advice would be: Look at what the development scripts do. Some of
them answer questions you asked.

I am only a bit sceptical in one aspect of git resp. the proposed
git-based workflow: History. If I understand correctly, the proposed
notion of history includes all aspects of work in progress whose
result will eventually be merged into Sage in *future*.

Why does the notion of history matter? Well, it is also stated that
changing the history is bad. Namely, if Alice works on branch A and Bob
works on branch B *on top of* A, and Alice changes a commit message or
folds commits *without* changing the resulting code (!), then from the
perspective of git A changes essentially. Hence, Bob needs to rebase B
because of (trivial) changes in A.

On the other hand, this rebasing is really trivial, if I understand
correctly: Bob just needs to do git checkout B (in order to change
to his branch) and then git merge A (in order to merge all the changes
that happened in A since Bob started work on B). Since Alice changed A
in a way that did not change the code, this merge should work without
problem.

(Note: Sorry, I am rather new in git, it could be that the command to
use in this case is git rebase A B and not git merge A; git rebase
can do other nice things, such as take changes that happened between two
commits and move it past other commits)

In other words, the consequences of the weird notion of history can
easily be fixed, probably in an automated way.

On 2013-11-04, Anne Schilling a...@math.ucdavis.edu wrote:
 - Should we use a fork for sage-combinat? Or branches for the various patches
   or projects?

I have not been an active user of the combinat queue, so take this as an
outside view: My impression was that the workflow on the combinat queue
was much different from the workflow in the rest of Sage. It happened
repeatedly that I had problems reviewing patches from the queue because
they have not been posted on trac, and if they have then soon the patch
in the queue and on trac became out of sync. Hence, from the viewpoint
of workflow, the combinat queue constituted a fork.

I think it would be excellent if Sage workflow and sage-combinat
workflow would coincide and allow for an easy transition.

I guess one option would indeed be to simply say that sage-combinat is
just formed by a collection of branches, in the same way as trac is
formed by a collection of branches.

I am not totally sure about the technical details, but if I am not mistaken,
git is able to merge a branch from one repository into a branch from another
repository. Hence, it would probably not matter whether sage-combinat is a
sub-collection of the branches on trac, of if sage-combinat is a separate
repository. 

That said, I guess reviewing of branches happens on trac. Hence, a
branch that is supposed to be reviewed and be merged into the released
version of Sage should appear in the trac repository. As I said, it *is*
easily possible to take a branch from a separate sage-combinat repository,
work on it in a local repository, and push it to a new branch in the trac
repository.

If I understand correctly, keeping the branch on sage-combinat and the
corresponding branch on trac synced is as easy as keeping your local
repository synced with the trac repository. Only it needs someone to
regularly do so (I could imagine that this someone is in fact a
script).

   * If we don't fork, then is there some way we can tie all of the
 combinat branches together? Specifically can we list all branches
 which don't have ticket numbers.

If I am not mistaken, git allows to use tags on branches. Hence, I
guess it should be possible to implement this based on tags. Ask git
experts. Of course, if sage-combinat would become a separate repository
(such as sage-on-github and sage-on-trac are separate), the problem
would not arise.

 Is there an automatic way to remove a sage-combinat branch once
 it has been merged into main sage?

There is a sage development skript that removes all the branches from
your local repository whose commits have already been merged into the
master branch. So, there should be an automated way.

 - How do we transform the queue into git branches,
   how do we handle dependencies?

How did Andrew Ohana and friends did the corresponding task for the Sage
mercurial repository? Handling dependencies is trivial in git, if I
understand correctly.

 - Will it be easy to switch between branches (like experimental code,
   branches to be reviewed etc)?

Switching between branches is totally trivial. Just do git checkout
name-of-branch, and you are there. This even holds for a branch that
belongs to a different remote repository.

Again, just see what the Sage development scripts are doing. There is
sage --dev checkout --ticket=12345, which would automatically
 - create a branch 

[sage-combinat-devel] Re: sage-combinat move to git

2013-11-04 Thread Simon King
Hi Nicolas,

On 2013-11-04, Nicolas M. Thiery nicolas.thi...@u-psud.fr wrote:
 - Switching from one branch to the other.

   As Simon pointed out, this will be easy. However whether it's
   practical or not will depend on how much time we will have to wait
   for recompilation in average.  Part of the answer will be in the
   compilation cache[1] infrastructure that Andrew  co have been
   exploring, but I don't know how far this project progressed.

Yes, that's a point I forgot to address (even though some of my own patches
tend to touch parent.pxd and are thus a pain in the neck).

On my laptop, I have installed ccache, and I think it really reduces the time
needed to change back and forth considerably.


 - Mitigation of the divergence between parallel development branches.

   An important feature of the workflow is to be able to request things
   like ``pull on my local Sage all the experimental features about
   tableaux, categories, and semigroups''.

Hmm. This might be an idea for a new Sage dev script. I don't know how
it is called and how it could be implemented (by lack of knowledge of
git). But I am convinced that people on the git-workflow mailing list
would know how to write a script that pulls (and then merges) all the
branches that are tagged semigroups. 

 Maybe we should leave it open for tiny changes like the finalization
 of patches that are just about to go into Sage 5.13 (typically if the
 release manager notices a glitch in a positively reviewed patch, we
 don't want this to bump that patch to 5.14). I am of course thinking
 about #10963 here in case the migration would occur soon.

In fact, on my laptop, I have a git branch for #10963.

Best regards,
Simon


-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/groups/opt_out.