Я посмотрел и еще не нашел что-то для Django, как команда Rails Generate. У Django есть немного другая философия. Это дает вам инструменты, позволяющие делать вещи легко, но на самом деле не делает это за вас (кроме интерфейса администратора). По большому счету, я думаю, что все в порядке. Когда я использую строительные леса для рельсов, я не могу часто сохранять большую часть автогенерированных материалов. Когда я это сделаю, интерфейс администратора django, вероятно, также сработал бы и дал бы мне больше функциональности.
Вместо этого я предлагаю читать через шаг 4 учебника по Django , который вводит общие а затем глава 7 книги Джанго , в которой представлены формы. Вы должны быть терпеливыми в главе 7, потому что авторы думают, что вы хотите узнать мельчайшие детали о трудном пути, прежде чем они научат вас легкому пути. (попробуйте найти страницу для фразы django.forms)
В конце концов, объем работы, которую вы должны делать между рельсами и джанго, эквивалентен и, возможно, чуть меньше с Django. Однако у вас нет одной команды, чтобы автоматически давать вам шаблонный код для использования в качестве основы.
Начиная с Git1.6.3 можно использовать мерзавец difftool сценарий : см. мой ответ ниже .
<час>май быть этим статья поможет Вам. Вот большие части:
существует два различных способа определить внешний различный инструмент.
первым является метод, который Вы использовали путем установки переменной GIT_EXTERNAL_DIFF. Однако переменная, как предполагается, указывает на полный путь исполняемого файла. Кроме того, исполняемый файл, определенный GIT_EXTERNAL_DIFF, назовут с фиксированным набором 7 аргументов:
path old-file old-hex old-mode new-file new-hex new-mode
, Поскольку большинство различных инструментов потребует различного порядка (и только некоторые) аргументов, необходимо будет, скорее всего, определить сценарий обертки вместо этого, который в свою очередь называет реальный различный инструмент.
второй метод, который я предпочитаю, к [1 144], настраивают внешний различный инструмент через "конфигурацию мерзавца" . Вот то, что я сделал:
1) Создают сценарий обертки "git-diff-wrapper.sh", который содержит что-то как [1 132]
-->8-(snip)--
#!/bin/sh
# diff is called by git with 7 parameters:
# path old-file old-hex old-mode new-file new-hex new-mode
"<path_to_diff_executable>" "$2" "$5" | cat
--8<-(snap)--
, Как Вы видите, только второе ("старый файл") и пятый ("новый файл"), аргументы будут переданы различному инструменту.
2) Тип
$ git config --global diff.external <path_to_wrapper_script>
в командной строке, заменяющей путем к "git-diff-wrapper.sh", таким образом, Ваш ~/.gitconfig содержит
-->8-(snip)--
[diff]
external = <path_to_wrapper_script>
--8<-(snap)--
убедиться использовать правильный синтаксис для определения путей к сценарию обертки и различному инструменту, т.е. использованию вперед, разрезал вместо обратных косых черт. В моем случае я имею
[diff]
external = \"c:/Documents and Settings/sschuber/git-diff-wrapper.sh\"
в .gitconfig и
"d:/Program Files/Beyond Compare 3/BCompare.exe" "$2" "$5" | cat
в сценарии обертки. Следите за запаздывающей "кошкой"!
(я предполагаю' | cat
', необходим только для некоторых программ, которые не могут возвратить надлежащий или последовательный статус возврата. Вы могли бы хотеть попробовать без запаздывающей кошки, если Ваш различный инструмент имеет явный статус возврата)
(, Diomidis Spinellis добавляет в комментариях :
<час>Эти
cat
команда требуется, потому чтоdiff(1)
, выходами по умолчанию с кодом ошибки, если файлы отличаются.
Мерзавец ожидает, что внешняя различная программа выйдет с кодом ошибки, только если произошла фактическая ошибка, например, если это исчерпывает память.
Путем передачи по каналу выводаgit
к [1 110] ненулевой код ошибки маскируется.
более эффективно, программа могла просто работатьexit
с и аргумент 0.)
, Который (статья, заключенная в кавычки выше), теория для внешнего инструмента определенный через файл конфигурации (не через переменную среды).
На практике (все еще для определения файла конфигурации внешнего инструмента), можно обратиться к:
Для ссылки я хотел бы включать свое изменение в ответ VonC. Следует иметь в виду, что я использую версию MSys Мерзавца (1.6.0.2 в это время) с измененным ПУТЕМ и выполняю Мерзавца самим из Powershell (или cmd.exe), не оболочка Bash.
я представил новую команду, gitdiff
. Выполнение этой команды временно перенаправляет git diff
для использования визуальной различной программы по Вашему выбору (в противоположность решению VonC, которое делает это постоянно). Это позволяет мне иметь обоих функциональность разности Мерзавца по умолчанию (git diff
), а также визуальная различная функциональность (gitdiff
). Обе команды берут те же параметры, так например, к визуально различным изменениям в конкретном файле, который можно ввести
gitdiff path/file.txt
Примечание, которое $GitInstall
используется в качестве заполнителя для каталога, где Мерзавец установлен.
Создают новый файл, $GitInstall\cmd\gitdiff.cmd
@echo off
setlocal
for /F "delims=" %%I in ("%~dp0..") do @set path=%%~fI\bin;%%~fI\mingw\bin;%PATH%
if "%HOME%"=="" @set HOME=%USERPROFILE%
set GIT_EXTERNAL_DIFF=git-diff-visual.cmd
set GIT_PAGER=cat
git diff %*
endlocal
Создают новый файл, $GitInstall\bin\git-diff-visual.cmd
(замена [visual_diff_exe]
заполнитель с полным путем к различной программе по Вашему выбору)
@echo off
rem diff is called by git with 7 parameters:
rem path old-file old-hex old-mode new-file new-hex new-mode
echo Diffing "%5"
"[visual_diff_exe]" "%2" "%5"
exit 0
, Вы теперь сделаны. Выполнение gitdiff
из репозитория Мерзавца должно теперь вызвать Вашу визуальную различную программу для каждого файла, который был изменен.
После чтения ответов, я обнаружил более простой путь, который включает изменение только одного файла.
Создают пакетный файл для вызова различной программы, с аргументом 2 и 5. Этот файл должен быть где-нибудь в Вашем пути. (Если Вы не знаете, куда то есть, поместите его в c:\windows). Назовите его, например, "gitdiff.bat". Мой:
@echo off
REM This is gitdiff.bat
"C:\Program Files\WinMerge\WinMergeU.exe" %2 %5
Набор переменная среды для указания на пакетный файл. Например: GIT_EXTERNAL_DIFF=gitdiff.bat
. Или через powershell путем ввода git config --global diff.external gitdiff.bat
.
важно не использовать кавычки или указать любую информацию о пути, иначе это не будет работать. Вот почему gitdiff.bat должен быть в Вашем пути.
Теперь при вводе "разности мерзавца" она вызовет внешнее различное средство просмотра.
Вот командный файл, который работает для Windows - предполагается, что DiffMerge установлен в месте по умолчанию, обрабатывает x64, обрабатывает замену с обратным слешем по мере необходимости и имеет возможность установить себя. Должно быть легко заменить DiffMerge вашей любимой программой diff.
Для установки:
gitvdiff --install
gitvdiff.bat:
@echo off
REM ---- Install? ----
REM To install, run gitvdiff --install
if %1==--install goto install
REM ---- Find DiffMerge ----
if DEFINED ProgramFiles^(x86^) (
Set DIFF="%ProgramFiles(x86)%\SourceGear\DiffMerge\DiffMerge.exe"
) else (
Set DIFF="%ProgramFiles%\SourceGear\DiffMerge\DiffMerge.exe"
)
REM ---- Switch forward slashes to back slashes ----
set oldW=%2
set oldW=%oldW:/=\%
set newW=%5
set newW=%newW:/=\%
REM ---- Launch DiffMerge ----
%DIFF% /title1="Old Version" %oldW% /title2="New Version" %newW%
goto :EOF
REM ---- Install ----
:install
set selfL=%~dpnx0
set selfL=%selfL:\=/%
@echo on
git config --global diff.external %selfL%
@echo off
:EOF
Начиная с версии git 1.6.3 существует " git difftool ", который вы можете настроить для использования вашего любимого графического инструмента сравнения. В настоящее время "из коробки" поддерживаются kdiff3, kompare, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, ecmerge, diffuse и opendiff ; если инструмента, который вы хотите использовать, нет в этом списке, вы всегда можете использовать параметр конфигурации ' difftool.
'.
«git difftool» принимает те же параметры, что и «git diff ".
Чтобы завершить мой предыдущий ответ на конфигурацию "diff.external" выше:
Как упомянул Якуб , Git1.6.3 представил git difftool , первоначально предложенный в сентябре 2008 г .:
USAGE = '[- tool = tool] [--commit = ref] [--start = ref --end = ref] [--no-prompt] [файл для объединения] '
(См. - extcmd
в последней части этого ответа)
$ LOCAL
содержит содержимое файла из начальная ревизия и $ REMOTE
содержит содержимое файла в конечной ревизии.
$ BASE
содержит содержимое файла в word
Это в основном
git- mergetool
модифицирован для работы с git index / worktree.Обычно этот сценарий используется, когда у вас есть поэтапные или неустановленные изменения и вы хотите увидеть изменения в параллельном средстве просмотра различий (например,
xxdiff
,tkdiff
и т. д.).
git difftool [<filename>*]
Другой вариант использования - это когда вы хотите видеть ту же информацию, но сравниваете произвольные коммиты (это та часть, где анализ revarg может быть лучше)
git difftool --start=HEAD^ --end=HEAD [-- <filename>*]
Последний вариант использования это когда вы хотите сравнить свое текущее рабочее дерево с чем-то другим, кроме HEAD (например, тегом)
git difftool --commit=v1.0.0 [-- <filename>*]
Примечание: начиная с Git 2.5, достаточно git config diff.tool winmerge
!
См. " git mergetool winmerge "
И , начиная с Git 1.7.11 , у вас есть опция - dir-diff
,для создания внешних инструментов сравнения, которые могут сравнивать две иерархии каталогов одновременно после заполнения двух временных каталогов, вместо запуска экземпляра внешнего инструмента один раз для каждой пары файлов.
До Git 2.5:
Практический случай для настройки difftool
с помощью вашего пользовательского инструмента сравнения:
C:\myGitRepo>git config --global diff.tool winmerge
C:\myGitRepo>git config --global difftool.winmerge.cmd "winmerge.sh \"$LOCAL\" \"$REMOTE\""
C:\myGitRepo>git config --global difftool.prompt false
С Winmerge.sh, хранящимся в части каталога вашего PATH:
#!/bin/sh
echo Launching WinMergeU.exe: $1 $2
"C:/Program Files/WinMerge/WinMergeU.exe" -u -e "$1" "$2" -dl "Local" -dr "Remote"
Если у вас есть другой инструмент (kdiff3, P4Diff, ...), создайте другой сценарий оболочки и соответствующую директиву config difftool.myDiffTool.cmd
.
#!/bin/sh
echo Launching WinMergeU.exe: $1 $2
"C:/Program Files/WinMerge/WinMergeU.exe" -u -e "$1" "$2" -dl "Local" -dr "Remote"
Если у вас есть другой инструмент (kdiff3, P4Diff, ...), создайте другой сценарий оболочки и соответствующую директиву config difftool.myDiffTool.cmd
.
#!/bin/sh
echo Launching WinMergeU.exe: $1 $2
"C:/Program Files/WinMerge/WinMergeU.exe" -u -e "$1" "$2" -dl "Local" -dr "Remote"
Если у вас есть другой инструмент (kdiff3, P4Diff, ...), создайте другой сценарий оболочки и соответствующую директиву config difftool.myDiffTool.cmd
.
Затем вы можете легко переключаться между инструментами с помощью конфигурации diff.tool
.
У вас также есть эта запись в блоге Дейва для добавления других деталей.
(Или этот вопрос для параметров winmergeu
)
Этот параметр интересен сценарием winmerge.sh
: вы можете настроить его так, чтобы учитывайте особые случаи.
См., например, ответ Дэвида Марбла ниже для примера, который касается:
Как Кем Мейсон упоминает в своем ответе , вы также можете избежать использования какой-либо оболочки, используя ] - extcmd
option :
--extcmd=<command>
Укажите пользовательскую команду для просмотра различий.
git-difftool
игнорирует настроенные значения по умолчанию и запускает$ command $ LOCAL $ REMOTE
, когда указана эта опция.
Например,
С новым git difftool , это так же просто, как добавить это в ваш файл .gitconfig :
[diff]
tool = any-name
[difftool "any-name"]
cmd = "\"C:/path/to/my/ext/diff.exe\" \"$LOCAL\" \"$REMOTE\""
Необязательно, также добавьте:
[difftool]
prompt = false
Также ознакомьтесь с difffall , простым скриптом, который я написал для расширения раздражающего (IMO) поведения diff по умолчанию при открытии каждого из них последовательно.
Глобальный файл .gitconfig в Windows находится в % USERPROFILE% \. gitconfig
Для версии Linux о том, как настроить инструмент сравнения различий в версиях git до 1.6.3 (1.6.3 добавил difftool в git) , это отличный краткое руководство,
вкратце:
Шаг 1: добавьте это в свой .gitconfig
[diff]
external = git_diff_wrapper
[pager]
diff =
Шаг 2: создайте файл с именем git_diff_wrapper, поместите его где-нибудь в свой $ PATH
#!/bin/sh
vimdiff "$2" "$5"
Я использую kompare в ubuntu:
sudo apt-get install kompare
Чтобы сравнить две ветви:
git difftool -t kompare <my_branch> master
В духе ответов на вопросы, которые несколько отличаются от заданных. Попробуйте следующее решение:
$ meld my_project_using_git
Meld понимает git и обеспечивает навигацию по последним изменениям.
Если вы делаете это через cygwin, вам может потребоваться использовать cygpath:
$ git config difftool.bc3.cmd "git-diff-bcomp-wrapper.sh \$LOCAL \$REMOTE"
$ cat git-diff-bcomp-wrapper.sh
#!/bin/sh
"c:/Program Files (x86)/Beyond Compare 3/BComp.exe" `cygpath -w $1` `cygpath -w $2`