Re: [racket-dev] Using `git submodule` vs. `git pull --ff-only upstream master`
Yes. FWIW I do: function parse_git_dirty() { [[ $(git status 2> /dev/null | tail -n1) != *"working directory clean"* ]] && echo "*" } function parse_git_branch() { git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e "s/* \(.*\)/\1$(parse_git_dirty)/" } Which goes into the the end of: greg@mbp in ~/src/plt/racket on master* $ And now that you mention it, I _did_ see the "*" in my prompt. I should have paid attention to it, but `git status` showed nothing. I should have done `git diff`. Sorry for the noise here. (My total experience with git submodule updates consists of the 2 or 3 times I've had to do this with Racket -- and at intervals of enough months that I manage to forget in between.) On Thu, Apr 17, 2014 at 9:37 PM, Spencer Florence wrote: > stale git submodules show up on a status. What I've found helpful is to add > a bit in my prompt that tells me if the current git repository has a non "up > to date" status (And the current branch). If you're running Zsh this is a > good place to start for that: > > git_prompt_info() { > ref=$(git symbolic-ref HEAD 2> /dev/null) > if [[ -n $ref ]]; then > echo -n "[%F{red}${ref#refs/heads/}%f" > st=$(git status -s 2> /dev/null) > if [[ -n $st ]]; then > echo -n "%f*%f" > fi > echo -n "]" > fi > } > export PS1='$(git_prompt_info)[%F{green}%m%F{white}:%F{blue}%2c%f] ' > > > Or on Bash: > > > function git_prompt_info() { > ref=$(git symbolic-ref HEAD 2> /dev/null | cut -d'/' -f3) > if [[ -n $ref ]]; then > # Zsh prompt this was based on > # echo "[%{$fg_bold[green]%}${ref#refs/heads/}%{$reset_color%}]" > echo "[$(tput setaf 2)$ref$(tput sgr0)]" > fi > } > export PS1="\$(git_prompt_info)$PS1" _ Racket Developers list: http://lists.racket-lang.org/dev
Re: [racket-dev] Using `git submodule` vs. `git pull --ff-only upstream master`
stale git submodules show up on a status. What I've found helpful is to add a bit in my prompt that tells me if the current git repository has a non "up to date" status (And the current branch). If you're running Zsh this is a good place to start for that: git_prompt_info() { ref=$(git symbolic-ref HEAD 2> /dev/null) if [[ -n $ref ]]; then echo -n "[%F{red}${ref#refs/heads/}%f" st=$(git status -s 2> /dev/null) if [[ -n $st ]]; then echo -n "%f*%f" fi echo -n "]" fi } export PS1='$(git_prompt_info)[%F{green}%m%F{white}:%F{blue}%2c%f] ' Or on Bash: function git_prompt_info() { ref=$(git symbolic-ref HEAD 2> /dev/null | cut -d'/' -f3) if [[ -n $ref ]]; then # Zsh prompt this was based on # echo "[%{$fg_bold[green]%}${ref#refs/heads/}%{$reset_color%}]" echo "[$(tput setaf 2)$ref$(tput sgr0)]" fi } export PS1="\$(git_prompt_info)$PS1" On Thu, Apr 17, 2014 at 9:25 PM, Greg Hendershott wrote: > For whoever else might find this useful building on OS X. > > Building HEAD today I got this new error: > > raco setup: --- creating launchers --- > raco setup: launcher: /raco > raco setup: --- installing man pages --- > raco setup: --- installing collections --- > raco setup: --- post-installing collections --- > raco setup: --- checking package dependencies --- > make install-common-last > make fix-paths > if [ "" != "" ]; then \ > racket/racketcgc -G /Users/greg/src/plt/racket/build/config -u \ > "../../collects/setup/unixstyle-install.rkt" \ > make-install-destdir-fix "../.." \ > "/Users/greg/src/plt/racket/racket/bin" > "/Users/greg/src/plt/racket/racket/collects" > "/Users/greg/src/plt/racket/racket/doc" > "/Users/greg/src/plt/racket/racket/lib" > "/Users/greg/src/plt/racket/racket/include" > "/Users/greg/src/plt/racket/racket/lib" > "/Users/greg/src/plt/racket/racket/share" > "/Users/greg/src/plt/racket/racket/etc" > "/Users/greg/src/plt/racket/racket/share/applications" > "/Users/greg/src/plt/racket/racket/man" "yes"; \ > fi > make preserve-raco-pkg-default-scope > : > cp "../COPYING-libscheme.txt" "../COPYING_LESSER.txt" "../COPYING.txt" > "/Users/greg/src/plt/racket/racket/share"/ > if racket/bin/racket -G build/config -I racket/base -e '(case > (system-type) [(macosx) (exit 0)] [else (exit 1)])' ; then make > native-from-git ; fi > if [ ! -d native-pkgs/racket-win32-i386 ]; then make complain-no-submodule > ; fi > make pkg-links PKGS="main-distribution plt-services" LINK_MODE="--save" > racket/bin/racket -U -G build/config racket/src/link-all.rkt ++dir > pkgs ++dir native-pkgs --save main-distribution plt-services > racket-lib > Linking packages: > plt-services > racket-lib > main-distribution > Recording packages choice in racket/etc/link-pkgs.rktd > link-all: requested package not available: "draw-x86_64-macosx-2" > context...: >/Users/greg/src/plt/racket/racket/src/link-all.rkt:150:6: for-loop >/Users/greg/src/plt/racket/racket/src/link-all.rkt:148:2: loop >/Users/greg/src/plt/racket/racket/src/link-all.rkt: [running body] > make[2]: *** [pkg-links] Error 1 > make[1]: *** [plain-in-place] Error 2 > make: *** [in-place] Error 2 > > > Although this is unlike the previous symptoms of stale submodules, > "draw-x86_64-macosx-2" sounds like something that might be related to > native-pkgs. So on a hunch I tried this: > > $ git submodule update > remote: Counting objects: 214, done. > remote: Compressing objects: 100% (157/157), done. > remote: Total 214 (delta 59), reused 183 (delta 44) > Receiving objects: 100% (214/214), 19.84 MiB | 54 KiB/s, done. > Resolving deltas: 100% (59/59), done. > From https://github.com/plt/libs >b698e73..3d8856e master -> origin/master > Submodule path 'native-pkgs': checked out > '3d8856eb987af16ab27cc99d4d24d5f9e7efc33b' > > > Although it was an unusually slow/big fetch, it succeeded. > > And now the build now. (Well as I type this, my laptop fans are > blazing away, as it is still running the raco setup stage. But it > proceeded OK past the point it was failing before.) > > Maybe this is obvious to everyone else, but I wanted to mention it in > case it helped anyone else building on OS X. > > On Tue, Dec 17, 2013 at 4:48 PM, Greg Hendershott > wrote: > > To answer my own question, back in July Matthew had posted here: > > > > On Sat, Jul 27, 2013 at 9:10 AM, Matthew Flatt > wrote: > >> Nothing has been split out of the current git repository, but there is > >> now a "native-pkgs" git submodule for the native-library packages. > >> > >> If you build on Mac OS X or Windows or if you run a snapshot build, > >> then you'll need to use > >> > >> git pull > >> git submodule init > >> git submodule update > >> > >> once on each repository checkout from now on, and > >> > >> git pull > >> git submodule update > >> > >> for updates after the first checkout. > >> > >> If you just `git pull' without the submodule commands, then you'll have >
Re: [racket-dev] Using `git submodule` vs. `git pull --ff-only upstream master`
For whoever else might find this useful building on OS X. Building HEAD today I got this new error: raco setup: --- creating launchers --- raco setup: launcher: /raco raco setup: --- installing man pages --- raco setup: --- installing collections --- raco setup: --- post-installing collections --- raco setup: --- checking package dependencies --- make install-common-last make fix-paths if [ "" != "" ]; then \ racket/racketcgc -G /Users/greg/src/plt/racket/build/config -u \ "../../collects/setup/unixstyle-install.rkt" \ make-install-destdir-fix "../.." \ "/Users/greg/src/plt/racket/racket/bin" "/Users/greg/src/plt/racket/racket/collects" "/Users/greg/src/plt/racket/racket/doc" "/Users/greg/src/plt/racket/racket/lib" "/Users/greg/src/plt/racket/racket/include" "/Users/greg/src/plt/racket/racket/lib" "/Users/greg/src/plt/racket/racket/share" "/Users/greg/src/plt/racket/racket/etc" "/Users/greg/src/plt/racket/racket/share/applications" "/Users/greg/src/plt/racket/racket/man" "yes"; \ fi make preserve-raco-pkg-default-scope : cp "../COPYING-libscheme.txt" "../COPYING_LESSER.txt" "../COPYING.txt" "/Users/greg/src/plt/racket/racket/share"/ if racket/bin/racket -G build/config -I racket/base -e '(case (system-type) [(macosx) (exit 0)] [else (exit 1)])' ; then make native-from-git ; fi if [ ! -d native-pkgs/racket-win32-i386 ]; then make complain-no-submodule ; fi make pkg-links PKGS="main-distribution plt-services" LINK_MODE="--save" racket/bin/racket -U -G build/config racket/src/link-all.rkt ++dir pkgs ++dir native-pkgs --save main-distribution plt-services racket-lib Linking packages: plt-services racket-lib main-distribution Recording packages choice in racket/etc/link-pkgs.rktd link-all: requested package not available: "draw-x86_64-macosx-2" context...: /Users/greg/src/plt/racket/racket/src/link-all.rkt:150:6: for-loop /Users/greg/src/plt/racket/racket/src/link-all.rkt:148:2: loop /Users/greg/src/plt/racket/racket/src/link-all.rkt: [running body] make[2]: *** [pkg-links] Error 1 make[1]: *** [plain-in-place] Error 2 make: *** [in-place] Error 2 Although this is unlike the previous symptoms of stale submodules, "draw-x86_64-macosx-2" sounds like something that might be related to native-pkgs. So on a hunch I tried this: $ git submodule update remote: Counting objects: 214, done. remote: Compressing objects: 100% (157/157), done. remote: Total 214 (delta 59), reused 183 (delta 44) Receiving objects: 100% (214/214), 19.84 MiB | 54 KiB/s, done. Resolving deltas: 100% (59/59), done. >From https://github.com/plt/libs b698e73..3d8856e master -> origin/master Submodule path 'native-pkgs': checked out '3d8856eb987af16ab27cc99d4d24d5f9e7efc33b' Although it was an unusually slow/big fetch, it succeeded. And now the build now. (Well as I type this, my laptop fans are blazing away, as it is still running the raco setup stage. But it proceeded OK past the point it was failing before.) Maybe this is obvious to everyone else, but I wanted to mention it in case it helped anyone else building on OS X. On Tue, Dec 17, 2013 at 4:48 PM, Greg Hendershott wrote: > To answer my own question, back in July Matthew had posted here: > > On Sat, Jul 27, 2013 at 9:10 AM, Matthew Flatt wrote: >> Nothing has been split out of the current git repository, but there is >> now a "native-pkgs" git submodule for the native-library packages. >> >> If you build on Mac OS X or Windows or if you run a snapshot build, >> then you'll need to use >> >> git pull >> git submodule init >> git submodule update >> >> once on each repository checkout from now on, and >> >> git pull >> git submodule update >> >> for updates after the first checkout. >> >> If you just `git pull' without the submodule commands, then you'll have >> an empty "native-pkgs" directory. That's fine if you're building on, >> say, Linux. If you're on Mac OS X or Windows, then the makefile should >> give you a good error message and suggest using `git submodule init' >> and `git submodule update'. >> >> If you use `git submodule update' today and forget to use it in the >> future, probably things will be fine for a long time, because >> "native-pkgs" doesn't change often. If "native-pkgs" does change and >> you forget `git submodule update', then (as I understand things) `git >> status' will tell you that there's a mismatch. The mismatch report >> might take a form that's not entirely clear, but it should be enough to >> remind you to run `git submodule update'. > > It turned out that it wasn't enough to remind _me_. :) Running `git > submodule update` resolved this for me. > > > On Fri, Sep 20, 2013 at 2:30 PM, Greg Hendershott > wrote: >> I build Racket while keeping my forked repo's `master` branch an >> exact, fast-forwardable copy of PLT's remote upstream `master`. [1] >> >> This has worked fine building Racket on Linux, and continues to do so. >> >> But on OS X, I need to follow
Re: [racket-dev] Using `git submodule` vs. `git pull --ff-only upstream master`
To answer my own question, back in July Matthew had posted here: On Sat, Jul 27, 2013 at 9:10 AM, Matthew Flatt wrote: > Nothing has been split out of the current git repository, but there is > now a "native-pkgs" git submodule for the native-library packages. > > If you build on Mac OS X or Windows or if you run a snapshot build, > then you'll need to use > > git pull > git submodule init > git submodule update > > once on each repository checkout from now on, and > > git pull > git submodule update > > for updates after the first checkout. > > If you just `git pull' without the submodule commands, then you'll have > an empty "native-pkgs" directory. That's fine if you're building on, > say, Linux. If you're on Mac OS X or Windows, then the makefile should > give you a good error message and suggest using `git submodule init' > and `git submodule update'. > > If you use `git submodule update' today and forget to use it in the > future, probably things will be fine for a long time, because > "native-pkgs" doesn't change often. If "native-pkgs" does change and > you forget `git submodule update', then (as I understand things) `git > status' will tell you that there's a mismatch. The mismatch report > might take a form that's not entirely clear, but it should be enough to > remind you to run `git submodule update'. It turned out that it wasn't enough to remind _me_. :) Running `git submodule update` resolved this for me. On Fri, Sep 20, 2013 at 2:30 PM, Greg Hendershott wrote: > I build Racket while keeping my forked repo's `master` branch an > exact, fast-forwardable copy of PLT's remote upstream `master`. [1] > > This has worked fine building Racket on Linux, and continues to do so. > > But on OS X, I need to follow these instructions from INSTALL.TXT, wrt > the pkg re-org: > > On Mac OS X and Windows, you'll need native-library packages in the > "native-pkgs" directory. In the git repostory, "native-pkgs" is a git > submodule, so you'll need >git submodule init >git submodule update > to get it set up. > <<< > > After I do so, the resulting build works great. > > However it introduces a change: > > greg@mbp in ~/src/plt/racket on master* > $ git diff > diff --git a/native-pkgs b/native-pkgs > index f367c0c..f8c8984 16 > --- a/native-pkgs > +++ b/native-pkgs > @@ -1 +1 @@ > -Subproject commit f367c0c4b05b91401d68b0180b416d616b31720d > +Subproject commit f8c8984ebe8a442d474558dced0eb824cbb24772 > <<< > > If I commit this, my master wouldn't be a FF copy anymore (AFIK). So I don't. > > But as a result, if I switch to a topic branch without committing > (normally a no-no), it's a bit weird: > > greg@mbp in ~/src/plt/racket on master* > $ git checkout imap-append-flags > warning: unable to rmdir native-pkgs: Directory not empty > Switched to branch 'imap-append-flags' > <<< > > After switching back to master, everything seems OK: > > greg@mbp in ~/src/plt/racket on imap-append-flags* > $ git checkout master > M native-pkgs > Switched to branch 'master' > Your branch is ahead of 'origin/master' by 771 commits. > <<< > > Is this -- the warning about native-pkgs -- something I should just > learn to ignore and treat as the new normal? > > > [1]: > http://www.greghendershott.com/2013/04/a-guide-for-infrequent-contributors-to-racket.html _ Racket Developers list: http://lists.racket-lang.org/dev
[racket-dev] Using `git submodule` vs. `git pull --ff-only upstream master`
I build Racket while keeping my forked repo's `master` branch an exact, fast-forwardable copy of PLT's remote upstream `master`. [1] This has worked fine building Racket on Linux, and continues to do so. But on OS X, I need to follow these instructions from INSTALL.TXT, wrt the pkg re-org: >>> On Mac OS X and Windows, you'll need native-library packages in the "native-pkgs" directory. In the git repostory, "native-pkgs" is a git submodule, so you'll need git submodule init git submodule update to get it set up. <<< After I do so, the resulting build works great. However it introduces a change: >>> greg@mbp in ~/src/plt/racket on master* $ git diff diff --git a/native-pkgs b/native-pkgs index f367c0c..f8c8984 16 --- a/native-pkgs +++ b/native-pkgs @@ -1 +1 @@ -Subproject commit f367c0c4b05b91401d68b0180b416d616b31720d +Subproject commit f8c8984ebe8a442d474558dced0eb824cbb24772 <<< If I commit this, my master wouldn't be a FF copy anymore (AFIK). So I don't. But as a result, if I switch to a topic branch without committing (normally a no-no), it's a bit weird: >>> greg@mbp in ~/src/plt/racket on master* $ git checkout imap-append-flags warning: unable to rmdir native-pkgs: Directory not empty Switched to branch 'imap-append-flags' <<< After switching back to master, everything seems OK: >>> greg@mbp in ~/src/plt/racket on imap-append-flags* $ git checkout master M native-pkgs Switched to branch 'master' Your branch is ahead of 'origin/master' by 771 commits. <<< Is this -- the warning about native-pkgs -- something I should just learn to ignore and treat as the new normal? [1]: http://www.greghendershott.com/2013/04/a-guide-for-infrequent-contributors-to-racket.html _ Racket Developers list: http://lists.racket-lang.org/dev