ec2f9cd20b7c6d615c233ab4f16be579b9c85ae0
braney
  Tue Nov 15 15:48:41 2022 -0800
put track duplication under hg.conf control

diff --git src/hg/hgTrackUi/hgTrackUi.c src/hg/hgTrackUi/hgTrackUi.c
index 00611e5..72ea42c 100644
--- src/hg/hgTrackUi/hgTrackUi.c
+++ src/hg/hgTrackUi/hgTrackUi.c
@@ -3156,30 +3156,33 @@
                 tdbIsDownloadsOnly(sibTdb) ? hgFileUiName(): hTrackUiForTrack(sibTdb->track),
                 cartSessionVarName(), cartSessionId(cart), chromosome, cgiEncode(sibTdb->track), 
                 sibTdb->shortLabel);
     printf("<td>%s</td></tr>\n", sibTdb->longLabel);
     }
 printf("</table>");
 jsEndCollapsibleSection();
 printf("</table>"); // required by jsCollapsible
 printf("<hr>");
 printf("</p>");
 }
 
 boolean tdbIsDupable(struct trackDb *tdb)
 /* Return TRUE if a track is duplicatable */
 {
+if (!dupTrackEnabled())
+    return FALSE;
+
 /* Can't handle container tracks yet at least */
 if (!tdbIsDataTrack(tdb))
     return FALSE;
 /* A few other special case we can't handle */
 if (startsWith("hub_", tdb->track))
     return FALSE;
 if (startsWith("ct_", tdb->track))
     return FALSE;
 if (sameString(tdb->track, "hgPcrResult"))
     return FALSE;
 if (sameString(tdb->track, "ruler"))
     return FALSE;
 if (sameString(tdb->track, "cutters"))
     return FALSE;
 if (sameString(tdb->track, "oligoMatch"))