That is am interesting idea.  Giving a semantic meaning to am empty field
should not alert behavior for non-empty fields.  Will you be coding it?

Mark Waite

On Tue, Jan 5, 2016, 11:47 AM Michael Giroux <[email protected]> wrote:

> Mark,
>
> I think there may be a simple solution that can be implemented in the Git
> plugin.  If the job is configured with additional behavior "checkout to
> local branch" AND the local branch name is left blank, then the Git plugin
> could do a checkout of the configured remote branch sans "origin/".  I
> think this allows for current behavior while also allowing maven release
> builds to run.
>
> Michael
>
>
> On Thursday, December 31, 2015 at 8:41:53 AM UTC-7, Mark Waite wrote:
>
>> I think your logic is very reasonable.  The git plugin seems like the
>> right place to do that.  Since the need is to reference a substring of the
>> current GIT_BRANCH value within the context of a Jenkins job, it seems like
>> an addition to the token macro keywords allowed on GIT_BRANCH might meet
>> your need.
>>
>> You might refer to https://issues.jenkins-ci.org/browse/JENKINS-25465 for
>> a discussion of the fullName=false parameter to GIT_BRANCH, in case that
>> will already handle your case.
>>
>> Mark Waite
>>
>> On Thu, Dec 31, 2015 at 6:07 AM Michael Giroux <[email protected]> wrote:
>>
> Accepting that the Git Parameter plugin is technically correct, lets get
>>> back to the maven release build issue.
>>> 1. to do a maven release, we MUST configure the "checkout to local
>>> branch" option, or define a pre build step to do a git checkout into a
>>> local branch.
>>> 2. the local branch name MUST be the effective name on the remote (sans
>>> origin/) to allow the maven release:prepare to push the pom changes to the
>>> correct branch.
>>> 3. we currently can not use the value from the Git Parameter plugin
>>> because that includes the "origin/" prefix resulting in a new branch
>>> created on the remote git repo.
>>>
>>> I'm not really sure where the option belongs, but to support doing a
>>> maven release on a branch specified by the Git Parameter plugin we need a
>>> clean way to get the code checked out into the correct local branch.
>>>
>>> The Git plugin could provide an option to derive local branch name, or
>>> the Git Parameter plugin could define an additional parameter containing
>>> the effective branch name.  I'm not sure which is best approach.  I suspect
>>> that the Git plugin should be able to operate whether the Git Parameter
>>> plugin has been configured or not, so I lean toward an option in Git plugin
>>> to "checkout to local branch" that ends up with the required local branch
>>> name, but there may be a more appropriate approach.
>>>
>>> What is the next step?
>>>
>>>
>>>
>>> On Wednesday, December 30, 2015 at 3:12:49 PM UTC-7, Mark Waite wrote:
>>>
>>>> Could do that as well, though the git parameter plugin is technically
>>>> correct.  It is showing the branch to be built, and the branch to be built
>>>> truly is "origin/master", since there is no local master branch tracking
>>>> the remote branch.
>>>>
>>>> Mark Waite
>>>>
>>>> On Wed, Dec 30, 2015 at 11:41 AM Michael Giroux <[email protected]>
>>>> wrote:
>>>>
>>> Mark, I wonder if one of the issues I have is actually a defect in the
>>>>> Git Parameter plugin.  Specifically, the values set by the Git Parameter
>>>>> plugin include the "origin/" prefix.  When this is used as the value for
>>>>> checkout to local branch, AND the build is a maven release, we end up with
>>>>> a new branch in Stash "origin/master" (should be simply master) or
>>>>> "origin/some_other_branch".  It seems that normal builds run just fine, 
>>>>> but
>>>>> release builds result in pushes back to Git and here is where the branch
>>>>> names get messed up.
>>>>>
>>>>> Should I be asking the Git Parameter plugin developers to strip the
>>>>> leading "origin/" from the branch names that are assigned to the 
>>>>> parameter?
>>>>>
>>>>> Michael
>>>>>
>>>>>
>>>>> On Wednesday, December 30, 2015 at 11:22:33 AM UTC-7, Michael Giroux
>>>>> wrote:
>>>>>>
>>>>>> Thanks Mark.  Command line build runs fine w/o compile errors.  For
>>>>>> your reference, this is a known Eclipse issue bug
>>>>>> https://bugs.eclipse.org/bugs/show_bug.cgi?id=369592.
>>>>>>
>>>>>> On Wednesday, December 30, 2015 at 10:34:59 AM UTC-7, Mark Waite
>>>>>> wrote:
>>>>>>>
>>>>>>> https://jenkins.ci.cloudbees.com/job/plugins/job/git-plugin/ (and
>>>>>>> my internal Jenkins server inside my firewall) confirm that the code on 
>>>>>>> the
>>>>>>> master branch compiles correctly from the maven command line.
>>>>>>>
>>>>>>> I run my debugger from Netbeans (rather than Eclipse) and can
>>>>>>> confirm that it compiles and runs from Netbeans as well.  I don't use
>>>>>>> Eclipse, so I'm not much help wiht Eclipse specific failures.
>>>>>>>
>>>>>>> Mark Waite
>>>>>>>
>>>>>>> On Wed, Dec 30, 2015 at 8:31 AM Michael Giroux <[email protected]>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> BTW, the following patch resolves my compile errors, but not sure
>>>>>>>> if the cast to (Item) is the best choice.
>>>>>>>>
>>>>>>>> diff --git a/src/test/java/hudson/plugins/git/GitSCMTest.java
>>>>>>>> b/src/test/java/hudson/plugins/git/GitSCMTest.java
>>>>>>>> index 3a14b10..a39e60c 100644
>>>>>>>> --- a/src/test/java/hudson/plugins/git/GitSCMTest.java
>>>>>>>> +++ b/src/test/java/hudson/plugins/git/GitSCMTest.java
>>>>>>>> @@ -1203,7 +1203,7 @@
>>>>>>>>                                  false,
>>>>>>>> Collections.<SubmoduleConfig>emptyList(),
>>>>>>>>                                  browser, null, null);
>>>>>>>>          p.setScm(scm);
>>>>>>>> -        configRoundtrip(p);
>>>>>>>> +        configRoundtrip((Item)p);
>>>>>>>>          assertEqualDataBoundBeans(scm,p.getScm());
>>>>>>>>          assertEquals("Wrong key", "git " + url, scm.getKey());
>>>>>>>>      }
>>>>>>>> @@ -1215,7 +1215,7 @@
>>>>>>>>          FreeStyleProject p = createFreeStyleProject();
>>>>>>>>          GitSCM scm = new GitSCM("
>>>>>>>> https://github.com/jenkinsci/jenkins";);
>>>>>>>>          p.setScm(scm);
>>>>>>>> -        configRoundtrip(p);
>>>>>>>> +        configRoundtrip((Item)p);
>>>>>>>>          assertEqualDataBoundBeans(scm,p.getScm());
>>>>>>>>      }
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Wednesday, December 30, 2015 at 10:29:37 AM UTC-7, Michael
>>>>>>>> Giroux wrote:
>>>>>>>>>
>>>>>>>>> Not making any changes to code, just trying to examine primary
>>>>>>>>> project source to understand what is being changed in the PRs.
>>>>>>>>> I cloned the primary git repo from
>>>>>>>>> https://github.com/jenkinsci/git-plugin.git so I could get some
>>>>>>>>> context for the PRs which show only the code being changed.  Getting
>>>>>>>>> compile errors on unmodified project.
>>>>>>>>>
>>>>>>>>> Eclipse version 4.5 (Mars), JDK  1.8.0 (also tried JDK 1.7.0)
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Wednesday, December 30, 2015 at 9:53:36 AM UTC-7, Mark Waite
>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>> Don't attempt to evaluate the two pull requests in the same
>>>>>>>>>> repository.  They are two different ideas that might meet your need. 
>>>>>>>>>>  I
>>>>>>>>>> suspect that one or the other will eventually be merged, but not 
>>>>>>>>>> both.
>>>>>>>>>>
>>>>>>>>>> Mark Waite
>>>>>>>>>>
>>>>>>>>>> On Wed, Dec 30, 2015 at 7:21 AM Michael Giroux <[email protected]>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> Mark, I'm taking a look at the two pull requests.  I cloned the
>>>>>>>>>>> repo so I can view code in Eclipse, but I'm getting compile errors 
>>>>>>>>>>> in
>>>>>>>>>>> GitSCMTest.java:
>>>>>>>>>>>
>>>>>>>>>>> Description Resource Path Location Type
>>>>>>>>>>> The method configRoundtrip(FreeStyleProject) is ambiguous for
>>>>>>>>>>> the type GitSCMTest GitSCMTest.java
>>>>>>>>>>> /git/src/test/java/hudson/plugins/git line 1206 Java Problem
>>>>>>>>>>>
>>>>>>>>>>> Suggestions?
>>>>>>>>>>>
>>>>>>>>>>> Michael
>>>>>>>>>>>
>>>>>>>>>>> On Tuesday, December 29, 2015 at 10:47:14 PM UTC-7, Mark Waite
>>>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> There is a pending pull request to the git plugin which
>>>>>>>>>>>> provides a new environment variable, GIT_SHORT_BRANCH_NAME.  The 
>>>>>>>>>>>> semantics
>>>>>>>>>>>> of that proposed environment variable are not quite what you're 
>>>>>>>>>>>> describing,
>>>>>>>>>>>> but you might review the pull request to see if it is close enough 
>>>>>>>>>>>> for your
>>>>>>>>>>>> use case.  See https://github.com/jenkinsci/git-plugin/pull/347
>>>>>>>>>>>>  and https://github.com/jenkinsci/git-plugin/pull/304 for two
>>>>>>>>>>>> different possibilities.
>>>>>>>>>>>>
>>>>>>>>>>>> Mark Waite
>>>>>>>>>>>>
>>>>>>>>>>>> On Tue, Dec 29, 2015 at 8:36 PM Michael Giroux <
>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>
>>>>>>>>>>> Yes.
>>>>>>>>>>>>>
>>>>>>>>>>>>> The issue I'm describing is a result of using the Git
>>>>>>>>>>>>> Parameter plugin which allows the user to select a branch, + the 
>>>>>>>>>>>>> Git plugin
>>>>>>>>>>>>> which allows configuration of the branch to build and the local 
>>>>>>>>>>>>> branch
>>>>>>>>>>>>> name, + maven release plugin which relies on local branch name 
>>>>>>>>>>>>> for push to
>>>>>>>>>>>>> remote + Stash Webhook to Jenkins with triggers a build of any 
>>>>>>>>>>>>> arbitrary
>>>>>>>>>>>>> branch.
>>>>>>>>>>>>>
>>>>>>>>>>>>> I will admit that one solution is to create two jobs in
>>>>>>>>>>>>> Jenkins to allow building of any arbitrary branch as triggered by 
>>>>>>>>>>>>> the Stash
>>>>>>>>>>>>> web hook for jenkins, and a second job that is configured to 
>>>>>>>>>>>>> build a branch
>>>>>>>>>>>>> specified by user supplied parameter values.
>>>>>>>>>>>>>
>>>>>>>>>>>>> The problem occurs when when attempting to configure a single
>>>>>>>>>>>>> jenkins build that allows for manual specification of branch via 
>>>>>>>>>>>>> the Git
>>>>>>>>>>>>> parameter, and builds kicked off by the Stash web hook to jenkins.
>>>>>>>>>>>>>
>>>>>>>>>>>>> 1. to allow the jenkins web hook to initiate a build, it is
>>>>>>>>>>>>> necessary to configure the build to build any branch (leaving 
>>>>>>>>>>>>> branch to
>>>>>>>>>>>>> build as blank).
>>>>>>>>>>>>> 2. to allow a maven release to build, you MUST specify a local
>>>>>>>>>>>>> branch name.  Otherwise, the push to stash fails the build does 
>>>>>>>>>>>>> not have a
>>>>>>>>>>>>> local branch name.
>>>>>>>>>>>>> 3. To meet condittion #1, the default value for the Git
>>>>>>>>>>>>> parameter must be "**" so that the branch to build is ANY (** or 
>>>>>>>>>>>>> empty)
>>>>>>>>>>>>>
>>>>>>>>>>>>> So basically, the issue is that if a build is configured to
>>>>>>>>>>>>> build any branch, and also has maven release configured, you need 
>>>>>>>>>>>>> some way
>>>>>>>>>>>>> to get the code checked out to a local branch (additional 
>>>>>>>>>>>>> behaviors) with
>>>>>>>>>>>>> the same name as the branch being built, and there is currently 
>>>>>>>>>>>>> no way to
>>>>>>>>>>>>> do that.
>>>>>>>>>>>>>
>>>>>>>>>>>>> I tried to put "${GIT_BRANCH/*\//}" into the "checkout to
>>>>>>>>>>>>> local branch" but this did not work.  It seems this field does 
>>>>>>>>>>>>> not resolve
>>>>>>>>>>>>> environment variable references using full bash variable reference
>>>>>>>>>>>>> notation.  Perhaps this is the solution.  Extend the "checkout to 
>>>>>>>>>>>>> local
>>>>>>>>>>>>> branch" to provide full bash resolution of the variable name.
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Tuesday, December 29, 2015 at 10:03:25 AM UTC-7, Michael
>>>>>>>>>>>>> Giroux wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Using Jenkins 1.609.3, Git plugin 2.4.0.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> We have configured most of our jobs to allow jobs to be
>>>>>>>>>>>>>> initiated by the Stash Webhook to Jenkins.  To allow developers 
>>>>>>>>>>>>>> to manually
>>>>>>>>>>>>>> initiate a build of any branch, the jobs use the Git Parameter 
>>>>>>>>>>>>>> to set a
>>>>>>>>>>>>>> BRANCH variable.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Using this configuration, the Git Parameter is configured to
>>>>>>>>>>>>>> set "**" as the default branch to build.  This allows the Stash 
>>>>>>>>>>>>>> Webhook to
>>>>>>>>>>>>>> initiate a build of any branch.  In order to allow the job to 
>>>>>>>>>>>>>> perform a
>>>>>>>>>>>>>> maven release, we have configured the Git SCM to checkout to 
>>>>>>>>>>>>>> local branch
>>>>>>>>>>>>>> "master".  This all works well as long as we are not doing a 
>>>>>>>>>>>>>> maven release,
>>>>>>>>>>>>>> or when we do a maven release on the master branch.  The 
>>>>>>>>>>>>>> strategy breaks
>>>>>>>>>>>>>> down if the developer attempts a maven release on another branch 
>>>>>>>>>>>>>> when the
>>>>>>>>>>>>>> maven release:prepare goal tries to push pom updates.  Note that 
>>>>>>>>>>>>>> the maven
>>>>>>>>>>>>>> release plugin uses the current local branch in the push as "git 
>>>>>>>>>>>>>> push url
>>>>>>>>>>>>>> localBranch:localBranch"  As a result, when the build is for 
>>>>>>>>>>>>>> "some_branch"
>>>>>>>>>>>>>> which has been checked out to local branch "master" we get an 
>>>>>>>>>>>>>> error on "git
>>>>>>>>>>>>>> push ... master:master" because the remote "master" is not in 
>>>>>>>>>>>>>> sync with the
>>>>>>>>>>>>>> local.  No surprises here since the local "master" is actually
>>>>>>>>>>>>>> "some_branch".
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> To resolve this, we have deleted the "checkout to local
>>>>>>>>>>>>>> branch" additional action, and added a pre-build step that does 
>>>>>>>>>>>>>> the
>>>>>>>>>>>>>> following:'
>>>>>>>>>>>>>> # checkout to a local branch using the remote branch name
>>>>>>>>>>>>>> LOCAL_GIT_BRANCH=${GIT_BRANCH/*\//}
>>>>>>>>>>>>>> git rev-parse --quiet --verify ${LOCAL_GIT_BRANCH} && git
>>>>>>>>>>>>>> branch -D ${LOCAL_GIT_BRANCH}
>>>>>>>>>>>>>> git checkout -b ${LOCAL_GIT_BRANCH} ${GIT_COMMIT}
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> With this in place, the build checks the code out to a local
>>>>>>>>>>>>>> branch with the same name as the remote branch allowing the maven
>>>>>>>>>>>>>> release:prepare goal to push changes to the branch that is being 
>>>>>>>>>>>>>> build.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> NOTE that we have tried to configure the "checkout to local
>>>>>>>>>>>>>> branch" using the property that is configured by the Git 
>>>>>>>>>>>>>> ($BRANCH) but that
>>>>>>>>>>>>>> results in local branch names of "origin/master", 
>>>>>>>>>>>>>> "origin/some_branch",
>>>>>>>>>>>>>> ...  This results in release:prepare doing pushes as "git push 
>>>>>>>>>>>>>> ...
>>>>>>>>>>>>>> origin/some_branch:origin/some_branch" which results in a new 
>>>>>>>>>>>>>> remote branch
>>>>>>>>>>>>>> named "origin/some_branch"  We have seen repos with branches 
>>>>>>>>>>>>>> named
>>>>>>>>>>>>>> "origin/master".  As a result, the desired branch is not 
>>>>>>>>>>>>>> updated, and a new
>>>>>>>>>>>>>> branch is created.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> QUESTION/SUGGESTION/...
>>>>>>>>>>>>>> It would be nice to have an option in the Git plugin to
>>>>>>>>>>>>>> "checkout to local branch" that derives the local branch name 
>>>>>>>>>>>>>> from the
>>>>>>>>>>>>>> remote branch name, without having to add our pre-build step.  
>>>>>>>>>>>>>> Thus, if I
>>>>>>>>>>>>>> select "origin/some_branch" from the Git parameter, I could 
>>>>>>>>>>>>>> checkout to
>>>>>>>>>>>>>> local branch using the Git Parameter $BRANCH which would resolve 
>>>>>>>>>>>>>> to
>>>>>>>>>>>>>> "some_branch" sans the "origin/" prefix.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Steps to Reproduce:
>>>>>>>>>>>>>> 1. configure a parameterized job with a git parameter using
>>>>>>>>>>>>>> "BRANCH" as the parameter name
>>>>>>>>>>>>>> 2. configure the Git scm additional behavour to checkout to
>>>>>>>>>>>>>> local branch "$BRANCH"
>>>>>>>>>>>>>> 3. configure job with as a maven release.
>>>>>>>>>>>>>> 4. perform a maven releae, selecting one of the branches from
>>>>>>>>>>>>>> the list of Git Parameter options.
>>>>>>>>>>>>>> 5. observe console output to examine the "git push" commands
>>>>>>>>>>>>>> generated by the release:prepare goal.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> --
>>>>>>>>>>>>> You received this message because you are subscribed to the
>>>>>>>>>>>>> Google Groups "Jenkins Users" group.
>>>>>>>>>>>>>
>>>>>>>>>>>> To unsubscribe from this group and stop receiving emails from
>>>>>>>>>>>>> it, send an email to [email protected].
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>> To view this discussion on the web visit
>>>>>>>>>>>>> https://groups.google.com/d/msgid/jenkinsci-users/37f6bc2d-d43e-44ff-a877-c525e5007842%40googlegroups.com
>>>>>>>>>>>>> <https://groups.google.com/d/msgid/jenkinsci-users/37f6bc2d-d43e-44ff-a877-c525e5007842%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>>>>>>>> .
>>>>>>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>> You received this message because you are subscribed to the
>>>>>>>>>>> Google Groups "Jenkins Users" group.
>>>>>>>>>>> To unsubscribe from this group and stop receiving emails from
>>>>>>>>>>> it, send an email to [email protected].
>>>>>>>>>>> To view this discussion on the web visit
>>>>>>>>>>> https://groups.google.com/d/msgid/jenkinsci-users/cbaf764b-e3d9-480e-980c-23b772fd4a43%40googlegroups.com
>>>>>>>>>>> <https://groups.google.com/d/msgid/jenkinsci-users/cbaf764b-e3d9-480e-980c-23b772fd4a43%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>>>>>> .
>>>>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>> You received this message because you are subscribed to the Google
>>>>>>>> Groups "Jenkins Users" group.
>>>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>>>> send an email to [email protected].
>>>>>>>> To view this discussion on the web visit
>>>>>>>> https://groups.google.com/d/msgid/jenkinsci-users/25050720-c0f3-465d-bc83-4d191c1c7bf6%40googlegroups.com
>>>>>>>> <https://groups.google.com/d/msgid/jenkinsci-users/25050720-c0f3-465d-bc83-4d191c1c7bf6%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>>> .
>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>>
>>>>>>> --
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "Jenkins Users" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>>> an email to [email protected].
>>>>>
>>>> To view this discussion on the web visit
>>>>> https://groups.google.com/d/msgid/jenkinsci-users/0cf5698d-3060-49db-b75f-72c5d71d5b7b%40googlegroups.com
>>>>> <https://groups.google.com/d/msgid/jenkinsci-users/0cf5698d-3060-49db-b75f-72c5d71d5b7b%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>> .
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>
>>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Jenkins Users" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>>
>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/jenkinsci-users/5815a292-6fa3-4c2f-838f-c95c53cddbac%40googlegroups.com
>>> <https://groups.google.com/d/msgid/jenkinsci-users/5815a292-6fa3-4c2f-838f-c95c53cddbac%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>> --
> You received this message because you are subscribed to the Google Groups
> "Jenkins Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/jenkinsci-users/32256296-87b8-40cf-8a6b-c27c193f2d5a%40googlegroups.com
> <https://groups.google.com/d/msgid/jenkinsci-users/32256296-87b8-40cf-8a6b-c27c193f2d5a%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-users/CAO49JtFg_wAZF49Vi0-uAhsqOXx3dzqrbUY%3DwBEBxRNHX5O1KQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to