decaporg / decap-cms

A Git-based CMS for Static Site Generators
https://decapcms.org
MIT License
17.7k stars 3.03k forks source link

Deploys fails because the Filename is too long #6987

Open jdromero88 opened 8 months ago

jdromero88 commented 8 months ago

Currently, I'm getting the next error on Netlify when the user adds a new post 12:14:04 PM: Failed during stage "preparing repo": error: unable to create file _posts/2023-11-21-bihar-passes-the-bihar-reservation-of-vacancies-in-p-s-sc-st-obc-amendment-bill-2023-reserving-seventy-five-percent-of-positions-in-government-jobs-and-educational-institutions-for-people-from-marginalised-castes-and-economically-weaker-sections.md: File name too long

Is your feature request related to a problem? Please describe. Yes. The team that uses the CMS is creating posts with long titles, and this is an everyday issue. I need to manually change the file name on GitHub to be able to deploy. image

Describe the solution you'd like Would be nice to have a way to tell the slug to use only 'x' amount of characters of the title to avoid this issue.

collections:
  - name: 'analysis'
    label: 'Analyses'
    label_singular: 'Analysis'
    folder: '_analysis/'
    create: true
    editor:
      preview: false
    slug: '{{year}}-{{month}}-{{day}}-{{slug}}'
    slug_length: 100
    sortable_fields: []
    fields:
      - { label: 'Layout', name: 'layout', widget: 'hidden', default: 'post' }
      - { label: 'Breadcrumbs', name: 'breadcrumbs', widget: 'hidden', default: 'analysi

Describe alternatives you've considered I know I can use pattern to limit the title field with regex, but in our use case the titles can't be shortened.

pkokorev commented 3 months ago

@jdromero88 hello ! did you find a workaround to this issue ? we ended up creating in every collection a spare- / meta- field "short title" that we don't use anywhere in the frontend code, and whose only purpose is to help decap generate shorter file names.

jdromero88 commented 3 months ago

Hi @pkokorev, no, I didn't. That's a great idea! I will try it and reach out back if I have any question. Thank you for sharing it!

jdromero88 commented 1 month ago

In case anyone is wondering, this is how I implemented the workaround suggested by @pkokorev. I limited the short title to 180 characters.

collections:
  - name: 'newsletter'
    label: 'Newsletters'
    label_singular: 'Newsletter'
    folder: '_newsletter/'
    create: true
    editor:
      preview: false
    indentifier_field: short_title
    slug: '{{year}}-{{month}}-{{day}}-{{slug}}'
    sortable_fields: []
    fields:
      - { label: 'Layout', name: 'layout', widget: 'hidden', default: 'post' }
      - { label: 'Breadcrumbs', name: 'breadcrumbs', widget: 'hidden', default: 'newsletter' }
      - { label: 'Is newsletter', name: 'is_newsletter', widget: 'hidden', default: true }
      - { label: 'Content Type', name: 'content_type', widget: 'hidden', default: 'newsletter' }
      - { label: 'Title', name: 'title', widget: 'string' }
      - { label: 'Short Title', name: 'short_title', widget: 'string', pattern: ['^.{0,180}$', "Must have less than 180 characters"] }