управление версией командной строки с Java - работа с множеством вложенных директорий - PullRequest
1 голос
/ 26 января 2011

Использование командной строки git с Java. Наш проект имеет множество вложенных пакетов, что, конечно, означает множество вложенных каталогов.

Печатание этих каталогов в командной строке становится PITA и кажется неизбежным для некоторых не повседневных операций, таких как «git rm». Особенно, когда я перемещаю вещи в Eclipse, тогда нужно играть в догонялки в командной строке, но файлы больше не существуют (нельзя использовать расширение оболочки или *). Кроме того, расширение оболочки не учитывает игнорируемые файлы, а отправка игнорируемых файлов в команду git приводит к прерыванию команды (по праву). Не заинтересован в интеграции IDE по причинам, выходящим за рамки этого вопроса.

Кто-нибудь задумывался над тем, чтобы сделать это проще?

Я нахожусь на win7 / powershell, но я открыт для предложений, использующих bash или batch.

Ответы [ 6 ]

1 голос
/ 28 января 2011

Я не знал о git add -A - и после использования этого в течение пары дней у меня не было так много расстройств пути.Отчитаемся.

1 голос
/ 26 января 2011

Я раньше не использовал git, но использую Perforce.Я предполагаю, что вам нужно сослаться на несколько каталогов, и по какой-то причине вы не можете использовать подстановочные знаки.Затем в PowerShell вы можете использовать такие конструкции:

## Find all directories named "test*"
dir * -inc test* -r | ? {$_.PSIsContainer} | % {git <some command> $_.FullName}

## Find all files and directories named "test*.*"
dir * -inc test*.* -r | % {git <some command> $_.FullName}

Вы также можете написать функцию-обертку, чтобы упростить это.Вот кое-что, с чего можно начать.

Function git {
    param(
        [Parameter(Position = 0, Mandatory = $true)]
        [String]$Command
        ,
        [Alias("PSPath")]
        [Parameter(Position = 1, ValueFromPipelineByPropertyName = $true)]
        [String[]]$Path
    )

    process {
        if ($Path) {
            $Path | {git.exe $Command $_}
        } else {
            git.exe $Command
        }
    }
}
1 голос
/ 26 января 2011

Не знаком с win7 / powershell.Предполагая, что имена ваших классов уникальны, в bash вы можете найти файлы с

find . -name SomeFile.java

. Затем вы можете "git rm" их с помощью

git rm $(find . -name SomeFile.java)

Конечно, если вы не хотитечтобы каждый раз вводить «find. -name», вы можете создать функцию в вашем .bashrc, чтобы упростить это.PowerShell поддерживает нечто подобное?Если нет, то как насчет просмотра cygwin, который позволяет запускать bash?

EDITED

Если имена ваших классов не уникальны, этот подход не будет работать так хорошо.

0 голосов
/ 30 января 2011

Вы пробовали EGit ? Это не самый впечатляющий пользовательский интерфейс Git, который вы когда-либо видели, но если вы уже используете Eclipse, это облегчит некоторые вещи. Также приятно видеть маленькие мини-иконки в самом Eclipse, показывающие, какие файлы изменились, а какие нет.

0 голосов
/ 28 января 2011

Вы пробовали git с фронтом git gui ?Обычно он поставляется с git и помогает быстро подготовить кучу файлов.

0 голосов
/ 28 января 2011

Если вы хотите избежать ввода всех путей, вы можете использовать TortoiseGit и осуществлять управление через графический интерфейс.

Мне также нравится использовать командную строку, но когда дело доходит до определенных случаев (например, возврат 20 файлов за раз), я считаю, что проще проверить файлы в диалоговом окне возврата и просто нажать кнопку ОК.Для меня TortoiseGit не является заменой консоли Git, но очень удобным ее расширением.

К сожалению, упомянутый вами вариант использования (удаление нескольких файлов одновременно) не может быть достигнут с помощью TortoiseGit .Если бы мне пришлось удалить сразу несколько файлов, я бы попросил git сообщить мне, какие файлы в настоящее время имеют версии (git ls-files), передать этот список в файл, отредактировать его и затем выполнить командуgit rm для каждого файла, оставшегося в отредактированном файле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...