title: Sharing labels in TFS?
body: <p>If I've created a label in TFS, assigning it to several files, my coworkers cannot change the versions of files (nor add other files) to that label. We get this error:</p>
  
  <pre><code>TF14077: The owner of a label cannot be changed. 
  </code></pre>
  
  <p>Researching the problem, I found <a href="http://tinyurl.com/6zuw9e" rel="nofollow noreferrer">this article</a>, which states:</p>
  
  <blockquote>
    <p>It is possible that a user could be
    allowed to manipulate a <strong>shared label</strong>
    in the development folder but only
    manipulate labels that they own in a
    production folder.
    (emphasis mine)</p>
  </blockquote>
  
  <p>Try as I might, I can't find any reference to "shared labels". So far as I can see, a label must have an owner.</p>
  
  <p>FWIW, what I'm trying to do is employ a "floating" label so that developers can indicate that their code is ready to become part of the build by tagging it with a particular label. Then the build process would just need to get everything having that label, and automatically get the most recent stuff that's actually ready to be built, ignoring both past versions as well as newer stuff that's not ready for prime time.</p>
  
  <hr>
  
  <p><em>Update:</em>
  I figure if I can't make a truly shared label, I can at least give users the right to edit labels created by their coworkers. This is pretty explicitly supported. Regular <em>Contributor</em> users don't have this right, but according to MSDN (see article <em>Team Foundation Server Permissions</em>, under <em>Source Control Permissions</em>), it can be granted by way of the <em>LabelOther</em> permission:</p>
  
  <blockquote>
    <p>Source control permissions are
    specific to source code files and
    folders. You can set these permissions
    by right-clicking the folder or file
    in Source Control Explorer, clicking
    Properties, and on the Security tab,
    selecting the user or group for which
    you want to change permissions, and
    then editing the permissions listed in
    Permissions. You can set these
    permissions by using the tf
    command-line utility for source
    control.</p>
  </blockquote>
  
  <p>...</p>
  
  <blockquote>
    <p>Administer labels | tf: <strong>LabelOther</strong> | Users who have this permission can edit or delete labels created by another user.</p>
  </blockquote>
  
  <p>So I've assigned that right to the Domain group that contains all the developers, as suggested above. I can verify that it's set using the <strong>tf permission</strong> command:</p>
  
  <pre><code>tf permission /group:"CORP\Web Team"
  </code></pre>
  
  <p>and the result is as expected (I also assigned Label, just for fun)</p>
  
  <pre><code>===============================================================================
  Server item: $/Test1/TeamBuildTypes (Inherit: Yes)
    Identity: CORP\Web Team
      Allow:
      Deny:
      Allow (Inherited): Label, LabelOther
      Deny (Inherited):
  </code></pre>
  
  <p>Yet my test user still is not being allowed to edit a label I created.</p>