NativeScript, file size, and source control

5 posts, 0 answers
  1. TJ
    TJ avatar
    58 posts
    Member since:
    Aug 2013

    Posted 22 Dec 2014 Link to this post

    Hey all,

    I've been playing with a NativeScript CLI project and decided I wanted to put it into source control. I naively added all files, and attempted to push and I got the error below:

    $ git push origin master
    Counting objects: 521, done.
    Delta compression using up to 8 threads.
    Compressing objects: 100% (468/468), done.
    Writing objects: 100% (521/521), 103.11 MiB | 2.46 MiB/s, done.
    Total 521 (delta 99), reused 0 (delta 0)
    remote: warning: File platforms/ios/build/device/grocery-list.app.dSYM/Contents/Resources/DWARF/grocery-list is 50.59 MB; this is larger than GitHub's recommended maximum file size of 50 MB
    remote: error: GH001: Large files detected.
    remote: error: Trace: 6f7f6c31f845a8e22d2205209c8e794c
    remote: error: See http://git.io/iEPt8g for more information.
    remote: error: File platforms/ios/NativeScript.framework/NativeScript is 288.12 MB; this exceeds GitHub's file size limit of 100 MB
    To git@github.com:tjvantoll/grocery-list.git
     ! [remote rejected] master -> master (pre-receive hook declined)
    error: failed to push some refs to 'git@github.com:tjvantoll/grocery-list.git'

    Basically GitHub says there are some huge files in the project and won't let me push. The weird thing is I can't find the files that git refers to as being too big.

    For now I'm excluding the platforms folder via .gitignore, which works, but I'm guessing this isn't something we want to recommend, as you could have platform-specific changes in that folder (aka changes that `tns platform add android/ios` won't add back). Correct me if I'm wrong.

    So what I'm wondering is 1) has anyone ran into this GitHub problem? and 2) do we have a recommended .gitignore to exclude the output of builds from source control?

    Thanks,
    TJ
  2. Kaloyan
    Admin
    Kaloyan avatar
    872 posts

    Posted 25 Dec 2014 Link to this post

    Hi TJ,

    We will require some additional time in order to answer your inquiry, due to holiday vacations. We will get back to you in this thread, as soon as possible. Thank you for the understanding in advance.

    Have a nice holidays!

    Regards,
    Kaloyan
    Telerik
     

    Check out the Telerik Platform - the only platform that combines a rich set of UI tools with powerful cloud services to develop web, hybrid and native mobile apps.

     
  3. Erjan Gavalji
    Admin
    Erjan Gavalji avatar
    1455 posts

    Posted 05 Jan 2015 Link to this post

    Hi TJ,

    Great input indeed!

    While this is on the table, we still haven't created specific instructions as to how to work with NativeScript CLI and source control.

    Basically, for the long term, what you did is correct: the `platforms` folder must always be generate-able - its platform-specific files get retrieved from the `tns-ios`/`tns-android` packages in NPMjs.org and its NS-application specific files (tns_modules and the user code) get generated from the content in the main folder.

    If the user wants to have anything that is platform-specific, they would:
    1) create an *.android.js/*.ios.js file if they have platform-specific JavaScript code
    2) create a custom module with its corresponding native binaries under the `modules` folder. 

    The implementation/specification of custom modules is still in progress, hence this is not an official information yet.

    Kind regards,
    Erjan Gavalji
    Telerik
     

    Check out the Telerik Platform - the only platform that combines a rich set of UI tools with powerful cloud services to develop web, hybrid and native mobile apps.

     
  4. TJ
    TJ avatar
    58 posts
    Member since:
    Aug 2013

    Posted 05 Jan 2015 in reply to Erjan Gavalji Link to this post

    Hey Erjan,

    Ok that makes sense. Just fyi I got the sense that the `platforms` folder was editable from this portion of the CLI README (https://github.com/NativeScript/nativescript-cli#create-project), specifically:

    > In the platforms directory, you can safely modify configuration files such asAndroidManifest.xml and Info.plist.

    Because the docs say you can change those files I just assumed you'd want them stored in source control. If `platforms` is intended to be generated only I think the docs should change to reflect that.

    Thanks,
    TJ
  5. Erjan Gavalji
    Admin
    Erjan Gavalji avatar
    1455 posts

    Posted 06 Jan 2015 Link to this post

    Indeed!

    Thanks for pointing this out!

    Putting a second thought, making the `platforms` folder generate-able might be a task too error-prone in the long run. What I mean is that it would require that the NativeScript project structure supports platform-specific file maintenance (like the below-mentioned AndroidManifest and Info.plist files).

    That said, it might be better to have that folder included to source control, but instead, each platform-specific project might have its .gitignore. Thus, we would concentrate and specify what we change. Of course, this adds another burden - we're getting locked into git and customers might use svn, TFS, or whatever other source control system. I'm putting these notes to the team discussion list.

    Best,
    Erjan
    Telerik
     

    Check out the Telerik Platform - the only platform that combines a rich set of UI tools with powerful cloud services to develop web, hybrid and native mobile apps.

     
Back to Top