I also ran into this several times while releasing Channels - several
releases had the wrong files ship out in them due to Git weirdness.

In the end, my solution was to build the release artifacts over on Travis
to guarantee a fresh build environment each time, but I doubt that would
work for Django. Adding "git clean" to the script is probably good enough,
but I might be tempted to make a script where you pass it a commit hash and
it checks it out to a fresh temporary directory and packages from there?

Andrew

On Mon, Feb 11, 2019 at 8:28 AM Carlton Gibson <carlton.gib...@gmail.com>
wrote:

> Hi all.
>
> This morning I released four versions of Django. Three of which, for 2.1,
> 2.0 and 1.11. (i.e. all the actually supported versions) were broken.
> In the package were additional files from `master`/2.2 which shouldn't
> have been there.
>
> This afternoon I have released follow-ups to correct this issue.
>
> First of all, sorry about that, and for any inconvenience caused.
>
>
> Then, these are process issues so, how can we do better next time?
>
> I'm not 100% sure what occurred.
>
> * The history in Git is correct.
> * I must have had the right commits checked out, because the package
> metadata is correct. (Filenames, version numbers and so on.)
>
> My best guess is that I've failed to `git clean` correctly before building
> each release.
> I'm not certain here because switching between branches doesn't leave the
> repos in an unclean state, and I'm pretty sure it was clean, but this seems
> the most likely error.
>
>
> Q: is there a nice git command to "assert I'm at exactly this tag"?
>
>
> Steps I've taken:
>
> * Moved the `git clean` step into the helper script used to build the
> packages. No chance of then missing it.
> * Added a `diff`-step after building just to make sure what's in the
> `django` module matches the checkout.
>
> The second of these, whilst just a visual check, would have worked with
> what ended up in the package vs what was in my working tree when I checked
> later, but I'm not sure it would have caught the issue when the package was
> created (because presumably my working tree was wrong at that point).
>
> A similar issue affects the checksums, which check that nothing changed
> since it was packaged, but not that the right things were packaged...
> (Similarly, pip install worked without error.)
>
> On the new 1.11 package, I created a virtualenv with Python 2 and ran the
> test suite. This worked so it should be good. But it would be good to
> automate this.
> (I'll look into it.) We don't ship the tests in the wheel, so we have to
> use the src-dist for this. (We could then diff the two django modules to
> make sure they were the same.)
>
> On the other packages I visually looked for incorrect files, but, beyond
> specific migrations (etc) that were known bad from the previous release,
> this doesn't generalise.
>
> "zaytsev" on IRC suggested running `makemigrations --check`, so having a
> test project to install against might also be worth it.
> (I'd guess running the test suite would be sufficient...)
>
>
> Any other thoughts very welcome.
>
>
> Kind Regards,
>
> Carlton
>
> --
> You received this message because you are subscribed to the Google Groups
> "Django developers (Contributions to Django itself)" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to django-developers+unsubscr...@googlegroups.com.
> To post to this group, send email to django-developers@googlegroups.com.
> Visit this group at https://groups.google.com/group/django-developers.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/django-developers/90c531fc-3d5b-4d9e-a55f-b88f2e04bb54%40googlegroups.com
> <https://groups.google.com/d/msgid/django-developers/90c531fc-3d5b-4d9e-a55f-b88f2e04bb54%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django developers  (Contributions to Django itself)" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-developers+unsubscr...@googlegroups.com.
To post to this group, send email to django-developers@googlegroups.com.
Visit this group at https://groups.google.com/group/django-developers.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-developers/CAFwN1uqvLhhEoB2WFy%3DC4KWA2gLns%3DadhCGwfnYidJsHOjVpUg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to