2x1=10

because numbers are people, too
Persönliches
Fotografie
Programmierung
    • Gitosis vs. UTF-8 BOM: “File contains no section headers.”

      Ich hat­te kür­zlich das Prob­lem, meine aus­gecheck­te gitosis.conf in einem Edi­tor zu bear­beit­en, der sie als UTF-8 mit Byte Order Mark abspe­icherte. Im Grunde ist dage­gen nichts einzuwen­den, da Pro­gramme den Mark­er automa­tisch erken­nen und die Datei als UTF-8 erken­nen soll­ten — Git/Gitosis zählt in dieser Hin­sicht lei­der noch nicht zu den schlaueren.
      Das Resul­tat ist nach einem git push — kurz gesagt — die Mel­dung ConfigParser.MissingSectionHeaderError: File contains no section headers. Und das fol­gende Pracht­stück an Aus­gabe:

      Counting objects: 8, done.
      Delta compression using up to 4 threads.
      Compressing objects: 100% (5/5), done.
      Writing objects: 100% (5/5), 1.03 KiB, done.
      Total 5 (delta 2), reused 0 (delta 0)
      remote: Traceback (most recent call last):
      remote:   File "/usr/bin/gitosis-run-hook", line 9, in <module>
      remote:     load_entry_point('gitosis==0.2', 'console_scripts', 'gitosis-run-hook')()
      remote:   File "/usr/lib/pymodules/python2.6/gitosis/app.py", line 24, in run
      remote:     return app.main()
      remote:   File "/usr/lib/pymodules/python2.6/gitosis/app.py", line 38, in main
      remote:     self.handle_args(parser, cfg, options, args)
      remote:   File "/usr/lib/pymodules/python2.6/gitosis/run_hook.py", line 75, in handle_args
      remote:     post_update(cfg, git_dir)
      remote:   File "/usr/lib/pymodules/python2.6/gitosis/run_hook.py", line 33, in post_update
      remote:     cfg.read(os.path.join(export, '..', 'gitosis.conf'))
      remote:   File "/usr/lib/python2.6/ConfigParser.py", line 286, in read
      remote:     self._read(fp, filename)
      remote:   File "/usr/lib/python2.6/ConfigParser.py", line 482, in _read
      remote:     raise MissingSectionHeaderError(fpname, lineno, line)
      remote: ConfigParser.MissingSectionHeaderError: File contains no section headers.
      remote: file: ./gitosis-export/../gitosis.conf, line: 1
      remote: '\xef\xbb\xbf[gitosis]\n'
      To git@server:gitosis-admin.git
         a498f43..e05defa  master -> master
      

      Und danach ist vor­bei mit lustig — da die “defek­te” Datei bere­its auf dem Serv­er ist, schla­gen alle weit­eren pull und push-Ver­suche fehl.

      Die Lösung beste­ht nun darin, auf dem Serv­er das BOM aus der Datei zu bekom­men. Dazu wech­selt man zu Fuß in das Gito­sis-Repos­i­to­ry — z.B.: /srv/gitosis/repositories/gitosis-admin.git — und legt ein Back­up der Datei gitosis.conf an. The­o­retisch sollte man nun die Datei mit iconv ein­fach zurück nach ANSI kon­vertieren kön­nen, das aber schlug bei mir fehl. Darum fol­gt nun an dieser Stelle etwas Voodoo mit awk und alles ist wieder gut.

      cp gitosis.conf gitosis-defect.conf
      awk '{if(NR==1)sub(/^\xef\xbb\xbf/,"");print}' gitosis-defect.conf > gitosis.conf
      

      Kudos für die Lösung gehen an diese Stack­Over­flow-Antwort. Es ist anzumerken, dass die Quell- und Ziel­d­atei nicht iden­tisch sein soll­ten.

      Ein diff zwis­chen den bei­den Dateien ergibt:

      @@ -1,4 +1,4 @@
      -<U+FEFF>[gitosis]
      +[gitosis]
      

      Passt. Jet­zt bloß nicht noch ein­mal die defek­te Orig­i­nal­datei pushen!

      April 5th, 2011 GMT +1 von
      Markus
      2011-04-5T17:11:13+01:00 2011-04-5T22:03:31+01:00 · 0 Kommentare
      git
      Version Control

      Hinterlasse einen Kommentar

      Hier klicken, um das Antworten abzubrechen.

    1. « newer
    2. 1
    3. …
    4. 35
    5. 36
    6. 37
    7. 38
    8. 39
    9. 40
    10. 41
    11. 42
    12. 43
    13. older »
    • Kategorien

      • .NET
        • ASP.NET
        • Core
        • DNX
      • Allgemein
      • Android
      • Data Science
      • Embedded
      • FPGA
      • Humor
      • Image Processing
      • Kalman Filter
      • Machine Learning
        • Caffe
        • Hidden Markov Models
        • ML Summarized
        • Neural Networks
        • TensorFlow
      • Mapping
      • MATLAB
      • Robotik
      • Rust
      • Signal Processing
      • Tutorial
      • Version Control
    • Neueste Beiträge

      • Summarized: The E-Dimension — Why Machine Learning Doesn’t Work Well for Some Problems?
      • Use your conda environment in Jupyter Notebooks
      • Building OpenCV for Anaconda Python 3
      • Using TensorFlow’s Supervisor with TensorBoard summary groups
      • Getting an image into and out of TensorFlow
    • Kategorien

      .NET Allgemein Android ASP.NET Caffe Core Data Science DNX Embedded FPGA Hidden Markov Models Humor Image Processing Kalman Filter Machine Learning Mapping MATLAB ML Summarized Neural Networks Robotik Rust Signal Processing TensorFlow Tutorial Version Control
    • Tags

      .NET Accelerometer Anaconda Bitmap Bug Canvas CLR docker FPGA FRDM-KL25Z FRDM-KL26Z Freescale git Gyroscope Integration Drift Intent J-Link Linear Programming Linux Magnetometer Matlab Mono Naismith OpenCV Open Intents OpenSDA Optimization Pipistrello Player/Stage PWM Python Sensor Fusion Simulink Spartan 6 svn tensorflow Tilt Compensation TRIAD ubuntu Windows Xilinx Xilinx SDK ZedBoard ZYBO Zynq
    • Letzte Kommetare

      • Lecke Mio bei Frequency-variable PWM generator in Simulink
      • Vaibhav bei Use your conda environment in Jupyter Notebooks
      • newbee bei Frequency-variable PWM generator in Simulink
      • Markus bei Using TensorFlow’s Supervisor with TensorBoard summary groups
      • Toke bei Using TensorFlow’s Supervisor with TensorBoard summary groups
    • Blog durchsuchen

    • April 2011
      M D M D F S S
          Nov »
       123
      45678910
      11121314151617
      18192021222324
      252627282930  
    • Self

      • Find me on GitHub
      • Google+
      • Me on Stack­Ex­change
      • Ye olde blog
    • Meta

      • Anmelden
      • Beitrags-Feed (RSS)
      • Kommentare als RSS
      • WordPress.org
    (Generiert in 0,419 Sekunden)

    Zurück nach oben.