Общий подход к поиску определенных файлов в папке и, возможно, во вложенных папках.
'******************************************************************
'* Find files in current folder and optionally in subfolders
'*
Option Explicit
Const ROOTFOLDER = "C:\Test" 'Change as desired
Const EXTENSION = "txt" 'Change as desired
Const FILES = "*." & EXTENSION
Dim g_FolderCount As Integer
Dim g_FileCount As Integer
'**********************************
'* Test code only
'*
Sub Test()
Dim Path As String
g_FileCount = 0
g_FolderCount = 0
Path = ROOTFOLDER
GetSubFolders Path, True
Debug.Print "Number of folders: " & g_FolderCount & ". Number of files: " & g_FileCount
End Sub
'****************************************************************
'* Recursive sub to find path and files
'*
Sub GetSubFolders(Path As String, subFolders As Boolean)
Dim FSO As Object 'Late binding: Scripting.FileSystemObject
Dim myFolder As Object 'Late binding: Folder
Dim mySubFolder As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
Set myFolder = FSO.GetFolder(Path)
If subFolders Then
If myFolder.subFolders.Count <> 0 Then
ProcessFiles Path 'First branch (root)
For Each mySubFolder In myFolder.subFolders
g_FolderCount = g_FolderCount + 1
GetSubFolders mySubFolder.Path, subFolders
Next
Else 'No more subfolders in Path, process files in current path
ProcessFiles Path
End If
Else 'No subdirectories, process current only
ProcessFiles Path
End If
End Sub
'*********************************************
'* Callback from GetSubFolders
'* Process files in the found folder
'*
Sub ProcessFiles(ByVal Path As String)
Dim theFilePattern As String
Dim theFile As String
Path = Path & "\"
theFilePattern = Path & FILES
theFile = Dir(theFilePattern)
While theFile <> "" 'Attach file with your own code from here
g_FileCount = g_FileCount + 1
Debug.Print Path & theFile
theFile = Dir() ' Next file if any
Wend
End Sub
Вы могли потребовать, чтобы каждый разработчик добавил тег разработчика рассмотрения к фиксации в фиксированном формате как [REV:XYZ]. Это позволяет Вам фильтровать историю. Как был упомянут здесь, можно использовать рычаги перед фиксацией инструмента управления версиями исходного кода для осуществления этого, если Вы должны.
Затем правило, что никакой код не может фиксироваться без экспертной оценки, должно быть передано всем разработчикам. Также покажите преимущества рассмотрения кода перед фиксацией. Первые несколько месяцев, кто-то должен проверить историю фиксации на фиксации без тега рецензента. Если они находят некоторых, спросите разработчиков почему, если они сделали обзор и с кого. Когда не было никакого обзора, напомните им о правиле. Если некоторые разработчики нарушают это правило сознательно несколько раз, могли бы быть последствия, но давление со стороны окружающих обычно предотвращает это.
Обычно, нет никакого оправдания за то, что не был сделан обзор, когда это правило в действительности. Особенно, "Но я должен был исправить эту ошибку быстро, чтобы поставить клиенту, исправленная версия" не может быть оправданием, потому что разработчик, более вероятно, совершит ошибки в порыве.
Этот вопрос походит на объявление для распределенного VCS как мерзавец или bzr: Вам нужны разработчики, чтобы смочь фиксировать изменения часто, но на их собственном ответвлении, которое затем рассматривается прежде чем быть втянутым к центральному репозиторию.
Лично я могу часто соглашаться на svn близко к 50 разам в день, таким образом, я wouldn ̈́'t как он ;)
Я знаю, что greenhopper плагин Atlassian для jira может быть выполнен, поскольку pre-committ сцепляется для требования jira ссылки в фиксации. При использовании greenhopper для планирования задач разработки также можно осуществить это все, фиксации должны быть подключены к проблеме jira.
И даже если Вы не используете greeenhopper, Вы могли бы, вероятно, создать рычаг pre-committ, который осуществляет комментарий фиксации, содержащий некоторый ссылочный номер отслеживания ошибки.
Это должно, вероятно, позволить Вам собрать собранный changeset, связанный с проблемой jira, которая походит на лучшую идею мне.
Разработчики могли создать ответвление для каждого изменения (не каждая фиксация). Они могли фиксировать так много раз, как им нравится в этом ответвлении. Однако, прежде чем изменения объединяются в соединительную линию, Вы могли осуществить экспертную оценку. Таким образом, Ваша соединительная линия будет только когда-либо содержать рассмотренный код однорангового узла.
Вы могли сделать это с помощью полномочий, поэтому только выберите людей, может согласиться на соединительную линию, и они могут проверить, что код в порядке прежде, чем сделать так.
Я использовал управление версиями некоторое время и думаю, что работа в модели ответвлений (вместо того, чтобы работать в соединительной линии) хороша. Системы DVCS как мерзавец берут этот шаг вперед и, кажется, работают хорошо на большое количество людей.