Как удалить VSS-хуки с веб-сайта VS? - PullRequest
0 голосов
/ 23 января 2009

У меня есть решение Visual Studio 2008 с 7 различными проектами, включенными в него. 3 из этих «проектов» - это веб-сайты (проект без файла проекта).

Я удалил все файлы Visual Sourcesafe из всех каталогов, удалил ссылки Scc в файле SLN и все существующие файлы проекта. Я удалил файл SUO и все файлы USER также. Visual Studio по-прежнему считает, что 2 веб-сайта все еще находятся под контролем исходного кода, и добавляет записи Scc обратно в файл SLN для меня.

Кто-нибудь знает , как VS все еще знает о старом контроле исходного кода?

Edit: Еще одна вещь, о которой я не упомянул, это то, что файлы, из которых я пытаюсь удалить хуки VSS, были скопированы за пределы известных рабочих каталогов VSS, запуска скрипта python и ручного редактирования файлов, созданных до открытия решения в VS 2008 или VS 2005 (у меня была проблема с обоими). ​​

Вот скрипт на python, который я использовал, чтобы отсеять эти файлы и сообщить мне, какие файлы нужно редактировать вручную.

import os, stat
from os.path import join

def main():
  startDir = r"C:\Documents and Settings\user\Desktop\project"

  manualEdits = []

  for root, dirs, files in os.walk(startDir, topdown=False):
    if '.svn' in dirs:
      dirs.remove('.svn')
    for name in files:
      os.chmod(join(root,name), stat.S_IWRITE)
      if name.endswith(".vssscc") or name.endswith(".scc") or name.endswith(".vspscc") or name.endswith(".suo") or name.endswith(".user"):
        print "Deleting:", join(root, name)
        os.remove(join(root,name))
      if name.endswith("sln") or name.endswith("dbp") or name.endswith("vbproj") or name.endswith("csproj"):
        manualEdits.append(join(root, name))

  print "Manual Edits are needed for these files:"
  for name in manualEdits:
    print name

if __name__ == "__main__":
  main()

Ответы [ 3 ]

1 голос
/ 23 января 2009

Эти вещи губительны! Visual Studio вставляет ссылки на SourceSafe везде, в том числе в XML, который составляет ваш файл sln.

Я написал статью о своем опыте преобразования исходных текстов в subversion и включил в него скрипт на python, который я использовал для очистки от мусора. Пожалуйста, обратите внимание:

1) Это очень легко проверено. Делайте резервные копии, чтобы не испортить файлы sln / * proj. Запустите свой тестовый набор до и после, чтобы убедиться, что он ничего не испортил (как это могло быть? Кто знает! Но произошли странные вещи).

2) Возможно, это было связано с другой версией sourceafe и visual studio, поэтому вам, возможно, придется настроить ее. Во всяком случае, без лишних слов:

import os, re

PROJ_RE = re.compile(r"^\s+Scc")
SLN_RE = re.compile(r"GlobalSection\(SourceCodeControl\).*?EndGlobalSection",
                    re.DOTALL)
VDPROJ_RE = re.compile(r"^\"Scc")

for (dir, dirnames, filenames) in os.walk('.'):
    for fname in filenames:
        fullname = os.path.join(dir, fname)
        if fname.endswith('scc'):
            os.unlink(fullname)
        elif fname.endswith('vdproj'):
            #Installer project has a different format
            fin = file(fullname)
            text = fin.readlines()
            fin.close()

            fout = file(fullname, 'w')
            for line in text:
                if not VDPROJ_RE.match(line):
                    fout.write(line)
            fout.close()
        elif fname.endswith('csproj'):
            fin = file(fullname)
            text = fin.readlines()
            fin.close()

            fout = file(fullname, 'w')
            for line in text:
                if not PROJ_RE.match(line):
                    fout.write(line)
            fout.close()
        elif fname.endswith('sln'):
            fin = file(fullname)
            text = fin.read()
            fin.close()

            text = SLN_RE.sub("", text)

            fout = file(fullname, 'w')
            fout.write(text)
1 голос
/ 23 января 2009

Вероятно, он только пытается добавить его в ваш экземпляр VS. Вы должны удалить кеш, чтобы VS считал, что его больше нет под SS

  1. в файле -> SourceControl -> Рабочие пространства
  2. Выберите местоположение SS
  3. Редактировать
  4. Выберите рабочую папку
  5. Удалить!
0 голосов
/ 06 февраля 2009

В вашем каталоге% APPDATA% Visual Studio сохраняет список веб-сайтов, используемых в Visual Studio, с некоторыми настройками этого сайта:

На моей машине Vista точное местоположение файла

C:\Users\{name}\AppData\Local\Microsoft\WebsiteCache\Websites.xml

Этот файл содержит записи типа

<?xml version="1.0" encoding="utf-16"?>
<DesignTimeData>
  <Website RootUrl="e:\Documents\Visual Studio 2008\WebSites\WebSite\"
      CacheFolder="WebSite" sccprovider="SubversionScc" scclocalpath="Svn"
      sccauxpath="Svn" addnewitemlang="Visual Basic" sccprojectname="Svn"
      targetframework="3.5" vwdport="60225" 
      _LastAccess="11-11-2008 10:58:03"/>
    <Website RootUrl="E:\siteje.webproj\" CacheFolder="siteje.webproj"
      _LastAccess="11-6-2008 14:43:45"/>
    <!-- And many more -->
</DesignTimeData />

Как видите, он содержит ссылки на Scc, которые также являются частью файла вашего решения. (В этом случае провайдером SCC является AnkhSVN 2.0, поэтому он не содержит фактического сопоставления SCC; только несколько константных строк, которые сообщают провайдеру SCC посмотреть на рабочую копию).

Я думаю, что пытался исправить отсутствующий файл проекта, кэшируя эту информацию в нескольких местах. Но было бы желательно, если бы этот файл был надлежащим образом задокументирован.

...